├── .github ├── dependabot.yml └── workflows │ ├── ci.yml │ ├── dependabot-automerge.yml │ └── release.yml ├── .gitignore ├── .vscode └── extensions.json ├── LICENSE ├── README.md ├── bun.lockb ├── index.html ├── package.json ├── src-tauri ├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── build.rs ├── icons │ ├── 128x128.png │ ├── 128x128@2x.png │ ├── 32x32.png │ ├── Square107x107Logo.png │ ├── Square142x142Logo.png │ ├── Square150x150Logo.png │ ├── Square284x284Logo.png │ ├── Square30x30Logo.png │ ├── Square310x310Logo.png │ ├── Square44x44Logo.png │ ├── Square71x71Logo.png │ ├── Square89x89Logo.png │ ├── StoreLogo.png │ ├── icon.icns │ ├── icon.ico │ ├── icon.png │ └── icon.svg ├── src │ └── main.rs └── tauri.conf.json ├── src ├── App.svelte ├── lib │ ├── audioRecorder.ts │ ├── homeAssistant.ts │ └── recorder.worklet.js ├── main.ts ├── pages │ ├── Home.svelte │ └── Settings.svelte ├── styles.css ├── types │ ├── assistResponse.ts │ ├── homeAssistantAssist.ts │ └── settings.ts └── vite-env.d.ts ├── svelte.config.js ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | --- 2 | version: 2 3 | updates: 4 | - package-ecosystem: "cargo" 5 | directory: "/src-tauri" 6 | schedule: 7 | interval: "daily" 8 | - package-ecosystem: "github-actions" 9 | directory: "/" 10 | schedule: 11 | interval: "daily" 12 | - package-ecosystem: "npm" 13 | directory: "/" 14 | schedule: 15 | interval: "daily" 16 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: "CI" 3 | 4 | on: 5 | push: 6 | branches: 7 | - "master" 8 | pull_request: 9 | branches: 10 | - "master" 11 | workflow_dispatch: 12 | 13 | jobs: 14 | build: 15 | strategy: 16 | fail-fast: false 17 | matrix: 18 | platform: [macos-latest, ubuntu-latest, windows-latest] 19 | runs-on: ${{ matrix.platform }} 20 | steps: 21 | - name: Checkout repository 22 | uses: actions/checkout@v4.1.7 23 | - name: Install dependencies (ubuntu only) 24 | if: matrix.platform == 'ubuntu-latest' 25 | run: | 26 | sudo apt update 27 | sudo apt install \ 28 | libwebkit2gtk-4.0-dev \ 29 | build-essential \ 30 | curl \ 31 | wget \ 32 | file \ 33 | libssl-dev \ 34 | libgtk-3-dev \ 35 | libayatana-appindicator3-dev \ 36 | librsvg2-dev 37 | - name: Rust setup 38 | uses: dtolnay/rust-toolchain@stable 39 | - name: Rust cache 40 | uses: swatinem/rust-cache@v2.7.3 41 | with: 42 | workspaces: "./src-tauri -> target" 43 | - name: Setup Bun 44 | uses: oven-sh/setup-bun@v2 45 | with: 46 | bun-version: latest 47 | no-cache: false 48 | - name: Install frontend dependencies 49 | run: bun install 50 | - name: Build the app 51 | uses: tauri-apps/tauri-action@v0.5.6 52 | - name: Publish artifacts 53 | uses: actions/upload-artifact@v4.3.3 54 | with: 55 | name: tauri-app-${{ matrix.platform }} 56 | path: | 57 | src-tauri/target/release/bundle 58 | -------------------------------------------------------------------------------- /.github/workflows/dependabot-automerge.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: "Dependabot - Auto-merge" 3 | 4 | # yamllint disable-line rule:truthy 5 | on: 6 | pull_request_target: 7 | 8 | permissions: 9 | pull-requests: write 10 | contents: write 11 | 12 | jobs: 13 | dependabot-automerge: 14 | uses: timmo001/workflows/.github/workflows/dependabot-automerge-any.yml@master 15 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: "Release" 3 | 4 | on: 5 | push: 6 | tags: 7 | - "*" 8 | workflow_dispatch: 9 | 10 | jobs: 11 | release: 12 | permissions: 13 | contents: write 14 | strategy: 15 | fail-fast: false 16 | matrix: 17 | platform: [macos-latest, ubuntu-latest, windows-latest] 18 | runs-on: ${{ matrix.platform }} 19 | steps: 20 | - name: Checkout repository 21 | uses: actions/checkout@v4.1.7 22 | - name: Install dependencies (ubuntu only) 23 | if: matrix.platform == 'ubuntu-latest' 24 | run: | 25 | sudo apt update 26 | sudo apt install \ 27 | libwebkit2gtk-4.0-dev \ 28 | build-essential \ 29 | curl \ 30 | wget \ 31 | file \ 32 | libssl-dev \ 33 | libgtk-3-dev \ 34 | libayatana-appindicator3-dev \ 35 | librsvg2-dev 36 | - name: Rust setup 37 | uses: dtolnay/rust-toolchain@stable 38 | - name: Rust cache 39 | uses: swatinem/rust-cache@v2.7.3 40 | with: 41 | workspaces: "./src-tauri -> target" 42 | - name: Setup Bun 43 | uses: oven-sh/setup-bun@v2 44 | with: 45 | bun-version: latest 46 | no-cache: false 47 | - name: Install frontend dependencies 48 | run: bun install 49 | - name: Build the app 50 | uses: tauri-apps/tauri-action@v0.5.6 51 | env: 52 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 53 | with: 54 | tagName: ${{ github.ref_name }} # This only works if your workflow triggers on new tags. 55 | releaseName: "App Name v__VERSION__" # tauri-action replaces \_\_VERSION\_\_ with the app version. 56 | releaseBody: "See the assets to download and install this version." 57 | releaseDraft: true 58 | prerelease: false 59 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "svelte.svelte-vscode", 4 | "tauri-apps.tauri-vscode", 5 | "rust-lang.rust-analyzer" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Home Assistant Assist - Desktop 2 | 3 | This is a desktop app for [Home Assistant](https://www.home-assistant.io) Assist. It is built using [Tauri](https://tauri.app) and [Svelte](https://svelte.dev). 4 | 5 | Compatible with Windows, MacOS, and Linux. 6 | 7 | You can find out more about Home Assistant Assist [here](https://www.home-assistant.io/voice_control/). 8 | 9 | [Community forum post](https://community.home-assistant.io/t/home-assistant-assist-desktop/656737?u=timmo001) 10 | 11 | [Discuss project](https://github.com/timmo001/home-assistant-assist-desktop/discussions) 12 | 13 | [Report issues](https://github.com/timmo001/home-assistant-assist-desktop/issues) 14 | 15 | ## Features 16 | 17 | - Speech to text 18 | - Text to speech 19 | - Assist pipeline picker via Assist icon in main window 20 | - Toggle with keyboard shortcuts 21 | - `Ctrl + Alt + A` to toggle main window 22 | - `Alt + Shift + A` to trigger voice pipeline 23 | - System tray icon 24 | - Double click to toggle main window 25 | 26 | ![Screenshot 01](https://community-assets.home-assistant.io/original/4X/b/f/f/bff536dbd616670babbf52ae25940a3d8cb1e2c6.png) 27 | 28 | ![Screenshot 02](https://community-assets.home-assistant.io/original/4X/b/2/8/b2811c098b857ebc63292b8cd52a5240ea17ae37.png) 29 | 30 | ## Installation 31 | 32 | You can download the latest release from the [releases](https://github.com/timmo001/home-assistant-assist-desktop/releases) page. 33 | 34 | ### Setup 35 | 36 | When you first run the app, you will be prompted to enter your Home Assistant URL and Long Lived Access Token. These are used to connect to your Home Assistant instance. 37 | 38 | > Your Home Assistant URL must be https due to [browser security restrictions](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content). 39 | 40 | ## Development 41 | 42 | ### Prerequisites 43 | 44 | - [Node.js](https://nodejs.org/en/) 45 | - [Yarn](https://yarnpkg.com/) 46 | - [Rust](https://www.rust-lang.org/) 47 | 48 | ### Setup 49 | 50 | ```bash 51 | yarn install 52 | ``` 53 | 54 | ### Running 55 | 56 | ```bash 57 | yarn tauri dev 58 | ``` 59 | 60 | ### Building 61 | 62 | ```bash 63 | yarn tauri build 64 | ``` 65 | 66 | ## Attributions 67 | 68 | A lot of the assist code is based on the Home Assistant frontend code. Here are some of the files which were used: 69 | 70 | https://github.com/home-assistant/frontend/blob/dev/src/dialogs/voice-command-dialog/ha-voice-command-dialog.ts 71 | 72 | https://github.com/home-assistant/frontend/blob/dev/src/util/audio-recorder.ts 73 | 74 | https://github.com/home-assistant/frontend/blob/dev/src/data/conversation.ts 75 | -------------------------------------------------------------------------------- /bun.lockb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timmo001/home-assistant-assist-desktop/82ae0add1f676a612fca9a49f315b140160d6157/bun.lockb -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Home Assistant Assist Desktop 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "home-assistant-assist-desktop", 3 | "private": true, 4 | "version": "1.4.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "preview": "vite preview", 10 | "check": "svelte-check --tsconfig ./tsconfig.json", 11 | "tauri": "tauri" 12 | }, 13 | "dependencies": { 14 | "@tauri-apps/api": "1.5.6", 15 | "home-assistant-js-websocket": "9.4.0", 16 | "svelte-routing": "2.13.0", 17 | "tauri-plugin-autostart-api": "https://github.com/tauri-apps/tauri-plugin-autostart#v1", 18 | "tauri-plugin-log-api": "https://github.com/tauri-apps/tauri-plugin-log#v1" 19 | }, 20 | "devDependencies": { 21 | "@sveltejs/vite-plugin-svelte": "3.1.1", 22 | "@tauri-apps/cli": "1.5.14", 23 | "@tsconfig/svelte": "5.0.4", 24 | "svelte": "4.2.19", 25 | "svelte-check": "3.8.4", 26 | "tslib": "2.6.3", 27 | "typescript": "5.5.2", 28 | "vite": "5.4.12" 29 | }, 30 | "packageManager": "yarn@1.22.19+sha1.4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" 31 | } 32 | -------------------------------------------------------------------------------- /src-tauri/.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | /target/ 4 | 5 | -------------------------------------------------------------------------------- /src-tauri/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 4 4 | 5 | [[package]] 6 | name = "addr2line" 7 | version = "0.21.0" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" 10 | dependencies = [ 11 | "gimli", 12 | ] 13 | 14 | [[package]] 15 | name = "adler" 16 | version = "1.0.2" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 19 | 20 | [[package]] 21 | name = "ahash" 22 | version = "0.7.8" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" 25 | dependencies = [ 26 | "getrandom 0.2.14", 27 | "once_cell", 28 | "version_check", 29 | ] 30 | 31 | [[package]] 32 | name = "aho-corasick" 33 | version = "1.1.3" 34 | source = "registry+https://github.com/rust-lang/crates.io-index" 35 | checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 36 | dependencies = [ 37 | "memchr", 38 | ] 39 | 40 | [[package]] 41 | name = "alloc-no-stdlib" 42 | version = "2.0.4" 43 | source = "registry+https://github.com/rust-lang/crates.io-index" 44 | checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" 45 | 46 | [[package]] 47 | name = "alloc-stdlib" 48 | version = "0.2.2" 49 | source = "registry+https://github.com/rust-lang/crates.io-index" 50 | checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" 51 | dependencies = [ 52 | "alloc-no-stdlib", 53 | ] 54 | 55 | [[package]] 56 | name = "android-tzdata" 57 | version = "0.1.1" 58 | source = "registry+https://github.com/rust-lang/crates.io-index" 59 | checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" 60 | 61 | [[package]] 62 | name = "android_system_properties" 63 | version = "0.1.5" 64 | source = "registry+https://github.com/rust-lang/crates.io-index" 65 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 66 | dependencies = [ 67 | "libc", 68 | ] 69 | 70 | [[package]] 71 | name = "anyhow" 72 | version = "1.0.82" 73 | source = "registry+https://github.com/rust-lang/crates.io-index" 74 | checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" 75 | 76 | [[package]] 77 | name = "arrayvec" 78 | version = "0.7.4" 79 | source = "registry+https://github.com/rust-lang/crates.io-index" 80 | checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" 81 | 82 | [[package]] 83 | name = "atk" 84 | version = "0.15.1" 85 | source = "registry+https://github.com/rust-lang/crates.io-index" 86 | checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd" 87 | dependencies = [ 88 | "atk-sys", 89 | "bitflags 1.3.2", 90 | "glib", 91 | "libc", 92 | ] 93 | 94 | [[package]] 95 | name = "atk-sys" 96 | version = "0.15.1" 97 | source = "registry+https://github.com/rust-lang/crates.io-index" 98 | checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" 99 | dependencies = [ 100 | "glib-sys", 101 | "gobject-sys", 102 | "libc", 103 | "system-deps 6.2.2", 104 | ] 105 | 106 | [[package]] 107 | name = "auto-launch" 108 | version = "0.5.0" 109 | source = "registry+https://github.com/rust-lang/crates.io-index" 110 | checksum = "1f012b8cc0c850f34117ec8252a44418f2e34a2cf501de89e29b241ae5f79471" 111 | dependencies = [ 112 | "dirs 4.0.0", 113 | "thiserror", 114 | "winreg 0.10.1", 115 | ] 116 | 117 | [[package]] 118 | name = "autocfg" 119 | version = "1.2.0" 120 | source = "registry+https://github.com/rust-lang/crates.io-index" 121 | checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" 122 | 123 | [[package]] 124 | name = "backtrace" 125 | version = "0.3.71" 126 | source = "registry+https://github.com/rust-lang/crates.io-index" 127 | checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" 128 | dependencies = [ 129 | "addr2line", 130 | "cc", 131 | "cfg-if", 132 | "libc", 133 | "miniz_oxide", 134 | "object", 135 | "rustc-demangle", 136 | ] 137 | 138 | [[package]] 139 | name = "base64" 140 | version = "0.13.1" 141 | source = "registry+https://github.com/rust-lang/crates.io-index" 142 | checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" 143 | 144 | [[package]] 145 | name = "base64" 146 | version = "0.21.7" 147 | source = "registry+https://github.com/rust-lang/crates.io-index" 148 | checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" 149 | 150 | [[package]] 151 | name = "base64" 152 | version = "0.22.0" 153 | source = "registry+https://github.com/rust-lang/crates.io-index" 154 | checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" 155 | 156 | [[package]] 157 | name = "bitflags" 158 | version = "1.3.2" 159 | source = "registry+https://github.com/rust-lang/crates.io-index" 160 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 161 | 162 | [[package]] 163 | name = "bitflags" 164 | version = "2.5.0" 165 | source = "registry+https://github.com/rust-lang/crates.io-index" 166 | checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" 167 | dependencies = [ 168 | "serde", 169 | ] 170 | 171 | [[package]] 172 | name = "bitvec" 173 | version = "1.0.1" 174 | source = "registry+https://github.com/rust-lang/crates.io-index" 175 | checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" 176 | dependencies = [ 177 | "funty", 178 | "radium", 179 | "tap", 180 | "wyz", 181 | ] 182 | 183 | [[package]] 184 | name = "block" 185 | version = "0.1.6" 186 | source = "registry+https://github.com/rust-lang/crates.io-index" 187 | checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 188 | 189 | [[package]] 190 | name = "block-buffer" 191 | version = "0.10.4" 192 | source = "registry+https://github.com/rust-lang/crates.io-index" 193 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 194 | dependencies = [ 195 | "generic-array", 196 | ] 197 | 198 | [[package]] 199 | name = "borsh" 200 | version = "1.4.0" 201 | source = "registry+https://github.com/rust-lang/crates.io-index" 202 | checksum = "0901fc8eb0aca4c83be0106d6f2db17d86a08dfc2c25f0e84464bf381158add6" 203 | dependencies = [ 204 | "borsh-derive", 205 | "cfg_aliases", 206 | ] 207 | 208 | [[package]] 209 | name = "borsh-derive" 210 | version = "1.4.0" 211 | source = "registry+https://github.com/rust-lang/crates.io-index" 212 | checksum = "51670c3aa053938b0ee3bd67c3817e471e626151131b934038e83c5bf8de48f5" 213 | dependencies = [ 214 | "once_cell", 215 | "proc-macro-crate 3.1.0", 216 | "proc-macro2", 217 | "quote", 218 | "syn 2.0.60", 219 | "syn_derive", 220 | ] 221 | 222 | [[package]] 223 | name = "brotli" 224 | version = "3.5.0" 225 | source = "registry+https://github.com/rust-lang/crates.io-index" 226 | checksum = "d640d25bc63c50fb1f0b545ffd80207d2e10a4c965530809b40ba3386825c391" 227 | dependencies = [ 228 | "alloc-no-stdlib", 229 | "alloc-stdlib", 230 | "brotli-decompressor", 231 | ] 232 | 233 | [[package]] 234 | name = "brotli-decompressor" 235 | version = "2.5.1" 236 | source = "registry+https://github.com/rust-lang/crates.io-index" 237 | checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" 238 | dependencies = [ 239 | "alloc-no-stdlib", 240 | "alloc-stdlib", 241 | ] 242 | 243 | [[package]] 244 | name = "bstr" 245 | version = "1.9.1" 246 | source = "registry+https://github.com/rust-lang/crates.io-index" 247 | checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" 248 | dependencies = [ 249 | "memchr", 250 | "regex-automata 0.4.6", 251 | "serde", 252 | ] 253 | 254 | [[package]] 255 | name = "bumpalo" 256 | version = "3.16.0" 257 | source = "registry+https://github.com/rust-lang/crates.io-index" 258 | checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" 259 | 260 | [[package]] 261 | name = "byte-unit" 262 | version = "5.1.4" 263 | source = "registry+https://github.com/rust-lang/crates.io-index" 264 | checksum = "33ac19bdf0b2665407c39d82dbc937e951e7e2001609f0fb32edd0af45a2d63e" 265 | dependencies = [ 266 | "rust_decimal", 267 | "serde", 268 | "utf8-width", 269 | ] 270 | 271 | [[package]] 272 | name = "bytecheck" 273 | version = "0.6.12" 274 | source = "registry+https://github.com/rust-lang/crates.io-index" 275 | checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" 276 | dependencies = [ 277 | "bytecheck_derive", 278 | "ptr_meta", 279 | "simdutf8", 280 | ] 281 | 282 | [[package]] 283 | name = "bytecheck_derive" 284 | version = "0.6.12" 285 | source = "registry+https://github.com/rust-lang/crates.io-index" 286 | checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" 287 | dependencies = [ 288 | "proc-macro2", 289 | "quote", 290 | "syn 1.0.109", 291 | ] 292 | 293 | [[package]] 294 | name = "bytemuck" 295 | version = "1.15.0" 296 | source = "registry+https://github.com/rust-lang/crates.io-index" 297 | checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" 298 | 299 | [[package]] 300 | name = "byteorder" 301 | version = "1.5.0" 302 | source = "registry+https://github.com/rust-lang/crates.io-index" 303 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 304 | 305 | [[package]] 306 | name = "bytes" 307 | version = "1.6.0" 308 | source = "registry+https://github.com/rust-lang/crates.io-index" 309 | checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" 310 | 311 | [[package]] 312 | name = "cairo-rs" 313 | version = "0.15.12" 314 | source = "registry+https://github.com/rust-lang/crates.io-index" 315 | checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" 316 | dependencies = [ 317 | "bitflags 1.3.2", 318 | "cairo-sys-rs", 319 | "glib", 320 | "libc", 321 | "thiserror", 322 | ] 323 | 324 | [[package]] 325 | name = "cairo-sys-rs" 326 | version = "0.15.1" 327 | source = "registry+https://github.com/rust-lang/crates.io-index" 328 | checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" 329 | dependencies = [ 330 | "glib-sys", 331 | "libc", 332 | "system-deps 6.2.2", 333 | ] 334 | 335 | [[package]] 336 | name = "cargo_toml" 337 | version = "0.15.3" 338 | source = "registry+https://github.com/rust-lang/crates.io-index" 339 | checksum = "599aa35200ffff8f04c1925aa1acc92fa2e08874379ef42e210a80e527e60838" 340 | dependencies = [ 341 | "serde", 342 | "toml 0.7.8", 343 | ] 344 | 345 | [[package]] 346 | name = "cc" 347 | version = "1.0.95" 348 | source = "registry+https://github.com/rust-lang/crates.io-index" 349 | checksum = "d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b" 350 | 351 | [[package]] 352 | name = "cesu8" 353 | version = "1.1.0" 354 | source = "registry+https://github.com/rust-lang/crates.io-index" 355 | checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 356 | 357 | [[package]] 358 | name = "cfb" 359 | version = "0.7.3" 360 | source = "registry+https://github.com/rust-lang/crates.io-index" 361 | checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" 362 | dependencies = [ 363 | "byteorder", 364 | "fnv", 365 | "uuid", 366 | ] 367 | 368 | [[package]] 369 | name = "cfg-expr" 370 | version = "0.9.1" 371 | source = "registry+https://github.com/rust-lang/crates.io-index" 372 | checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7" 373 | dependencies = [ 374 | "smallvec", 375 | ] 376 | 377 | [[package]] 378 | name = "cfg-expr" 379 | version = "0.15.8" 380 | source = "registry+https://github.com/rust-lang/crates.io-index" 381 | checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" 382 | dependencies = [ 383 | "smallvec", 384 | "target-lexicon", 385 | ] 386 | 387 | [[package]] 388 | name = "cfg-if" 389 | version = "1.0.0" 390 | source = "registry+https://github.com/rust-lang/crates.io-index" 391 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 392 | 393 | [[package]] 394 | name = "cfg_aliases" 395 | version = "0.1.1" 396 | source = "registry+https://github.com/rust-lang/crates.io-index" 397 | checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" 398 | 399 | [[package]] 400 | name = "chrono" 401 | version = "0.4.38" 402 | source = "registry+https://github.com/rust-lang/crates.io-index" 403 | checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" 404 | dependencies = [ 405 | "android-tzdata", 406 | "iana-time-zone", 407 | "num-traits", 408 | "serde", 409 | "windows-targets 0.52.5", 410 | ] 411 | 412 | [[package]] 413 | name = "cocoa" 414 | version = "0.24.1" 415 | source = "registry+https://github.com/rust-lang/crates.io-index" 416 | checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" 417 | dependencies = [ 418 | "bitflags 1.3.2", 419 | "block", 420 | "cocoa-foundation", 421 | "core-foundation", 422 | "core-graphics 0.22.3", 423 | "foreign-types 0.3.2", 424 | "libc", 425 | "objc", 426 | ] 427 | 428 | [[package]] 429 | name = "cocoa" 430 | version = "0.25.0" 431 | source = "registry+https://github.com/rust-lang/crates.io-index" 432 | checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" 433 | dependencies = [ 434 | "bitflags 1.3.2", 435 | "block", 436 | "cocoa-foundation", 437 | "core-foundation", 438 | "core-graphics 0.23.2", 439 | "foreign-types 0.5.0", 440 | "libc", 441 | "objc", 442 | ] 443 | 444 | [[package]] 445 | name = "cocoa-foundation" 446 | version = "0.1.2" 447 | source = "registry+https://github.com/rust-lang/crates.io-index" 448 | checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" 449 | dependencies = [ 450 | "bitflags 1.3.2", 451 | "block", 452 | "core-foundation", 453 | "core-graphics-types", 454 | "libc", 455 | "objc", 456 | ] 457 | 458 | [[package]] 459 | name = "color_quant" 460 | version = "1.1.0" 461 | source = "registry+https://github.com/rust-lang/crates.io-index" 462 | checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" 463 | 464 | [[package]] 465 | name = "combine" 466 | version = "4.6.7" 467 | source = "registry+https://github.com/rust-lang/crates.io-index" 468 | checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" 469 | dependencies = [ 470 | "bytes", 471 | "memchr", 472 | ] 473 | 474 | [[package]] 475 | name = "convert_case" 476 | version = "0.4.0" 477 | source = "registry+https://github.com/rust-lang/crates.io-index" 478 | checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" 479 | 480 | [[package]] 481 | name = "core-foundation" 482 | version = "0.9.4" 483 | source = "registry+https://github.com/rust-lang/crates.io-index" 484 | checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 485 | dependencies = [ 486 | "core-foundation-sys", 487 | "libc", 488 | ] 489 | 490 | [[package]] 491 | name = "core-foundation-sys" 492 | version = "0.8.6" 493 | source = "registry+https://github.com/rust-lang/crates.io-index" 494 | checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" 495 | 496 | [[package]] 497 | name = "core-graphics" 498 | version = "0.22.3" 499 | source = "registry+https://github.com/rust-lang/crates.io-index" 500 | checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" 501 | dependencies = [ 502 | "bitflags 1.3.2", 503 | "core-foundation", 504 | "core-graphics-types", 505 | "foreign-types 0.3.2", 506 | "libc", 507 | ] 508 | 509 | [[package]] 510 | name = "core-graphics" 511 | version = "0.23.2" 512 | source = "registry+https://github.com/rust-lang/crates.io-index" 513 | checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" 514 | dependencies = [ 515 | "bitflags 1.3.2", 516 | "core-foundation", 517 | "core-graphics-types", 518 | "foreign-types 0.5.0", 519 | "libc", 520 | ] 521 | 522 | [[package]] 523 | name = "core-graphics-types" 524 | version = "0.1.3" 525 | source = "registry+https://github.com/rust-lang/crates.io-index" 526 | checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" 527 | dependencies = [ 528 | "bitflags 1.3.2", 529 | "core-foundation", 530 | "libc", 531 | ] 532 | 533 | [[package]] 534 | name = "cpufeatures" 535 | version = "0.2.12" 536 | source = "registry+https://github.com/rust-lang/crates.io-index" 537 | checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" 538 | dependencies = [ 539 | "libc", 540 | ] 541 | 542 | [[package]] 543 | name = "crc32fast" 544 | version = "1.4.0" 545 | source = "registry+https://github.com/rust-lang/crates.io-index" 546 | checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" 547 | dependencies = [ 548 | "cfg-if", 549 | ] 550 | 551 | [[package]] 552 | name = "crossbeam-channel" 553 | version = "0.5.12" 554 | source = "registry+https://github.com/rust-lang/crates.io-index" 555 | checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" 556 | dependencies = [ 557 | "crossbeam-utils", 558 | ] 559 | 560 | [[package]] 561 | name = "crossbeam-deque" 562 | version = "0.8.5" 563 | source = "registry+https://github.com/rust-lang/crates.io-index" 564 | checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" 565 | dependencies = [ 566 | "crossbeam-epoch", 567 | "crossbeam-utils", 568 | ] 569 | 570 | [[package]] 571 | name = "crossbeam-epoch" 572 | version = "0.9.18" 573 | source = "registry+https://github.com/rust-lang/crates.io-index" 574 | checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 575 | dependencies = [ 576 | "crossbeam-utils", 577 | ] 578 | 579 | [[package]] 580 | name = "crossbeam-utils" 581 | version = "0.8.19" 582 | source = "registry+https://github.com/rust-lang/crates.io-index" 583 | checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" 584 | 585 | [[package]] 586 | name = "crypto-common" 587 | version = "0.1.6" 588 | source = "registry+https://github.com/rust-lang/crates.io-index" 589 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 590 | dependencies = [ 591 | "generic-array", 592 | "typenum", 593 | ] 594 | 595 | [[package]] 596 | name = "cssparser" 597 | version = "0.27.2" 598 | source = "registry+https://github.com/rust-lang/crates.io-index" 599 | checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" 600 | dependencies = [ 601 | "cssparser-macros", 602 | "dtoa-short", 603 | "itoa 0.4.8", 604 | "matches", 605 | "phf 0.8.0", 606 | "proc-macro2", 607 | "quote", 608 | "smallvec", 609 | "syn 1.0.109", 610 | ] 611 | 612 | [[package]] 613 | name = "cssparser-macros" 614 | version = "0.6.1" 615 | source = "registry+https://github.com/rust-lang/crates.io-index" 616 | checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" 617 | dependencies = [ 618 | "quote", 619 | "syn 2.0.60", 620 | ] 621 | 622 | [[package]] 623 | name = "ctor" 624 | version = "0.2.8" 625 | source = "registry+https://github.com/rust-lang/crates.io-index" 626 | checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" 627 | dependencies = [ 628 | "quote", 629 | "syn 2.0.60", 630 | ] 631 | 632 | [[package]] 633 | name = "darling" 634 | version = "0.20.8" 635 | source = "registry+https://github.com/rust-lang/crates.io-index" 636 | checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" 637 | dependencies = [ 638 | "darling_core", 639 | "darling_macro", 640 | ] 641 | 642 | [[package]] 643 | name = "darling_core" 644 | version = "0.20.8" 645 | source = "registry+https://github.com/rust-lang/crates.io-index" 646 | checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" 647 | dependencies = [ 648 | "fnv", 649 | "ident_case", 650 | "proc-macro2", 651 | "quote", 652 | "strsim", 653 | "syn 2.0.60", 654 | ] 655 | 656 | [[package]] 657 | name = "darling_macro" 658 | version = "0.20.8" 659 | source = "registry+https://github.com/rust-lang/crates.io-index" 660 | checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" 661 | dependencies = [ 662 | "darling_core", 663 | "quote", 664 | "syn 2.0.60", 665 | ] 666 | 667 | [[package]] 668 | name = "dbus" 669 | version = "0.9.7" 670 | source = "registry+https://github.com/rust-lang/crates.io-index" 671 | checksum = "1bb21987b9fb1613058ba3843121dd18b163b254d8a6e797e144cbac14d96d1b" 672 | dependencies = [ 673 | "libc", 674 | "libdbus-sys", 675 | "winapi", 676 | ] 677 | 678 | [[package]] 679 | name = "deranged" 680 | version = "0.3.11" 681 | source = "registry+https://github.com/rust-lang/crates.io-index" 682 | checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" 683 | dependencies = [ 684 | "powerfmt", 685 | "serde", 686 | ] 687 | 688 | [[package]] 689 | name = "derive_more" 690 | version = "0.99.17" 691 | source = "registry+https://github.com/rust-lang/crates.io-index" 692 | checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" 693 | dependencies = [ 694 | "convert_case", 695 | "proc-macro2", 696 | "quote", 697 | "rustc_version", 698 | "syn 1.0.109", 699 | ] 700 | 701 | [[package]] 702 | name = "digest" 703 | version = "0.10.7" 704 | source = "registry+https://github.com/rust-lang/crates.io-index" 705 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 706 | dependencies = [ 707 | "block-buffer", 708 | "crypto-common", 709 | ] 710 | 711 | [[package]] 712 | name = "dirs" 713 | version = "4.0.0" 714 | source = "registry+https://github.com/rust-lang/crates.io-index" 715 | checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" 716 | dependencies = [ 717 | "dirs-sys 0.3.7", 718 | ] 719 | 720 | [[package]] 721 | name = "dirs" 722 | version = "5.0.1" 723 | source = "registry+https://github.com/rust-lang/crates.io-index" 724 | checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" 725 | dependencies = [ 726 | "dirs-sys 0.4.1", 727 | ] 728 | 729 | [[package]] 730 | name = "dirs-next" 731 | version = "2.0.0" 732 | source = "registry+https://github.com/rust-lang/crates.io-index" 733 | checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" 734 | dependencies = [ 735 | "cfg-if", 736 | "dirs-sys-next", 737 | ] 738 | 739 | [[package]] 740 | name = "dirs-sys" 741 | version = "0.3.7" 742 | source = "registry+https://github.com/rust-lang/crates.io-index" 743 | checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" 744 | dependencies = [ 745 | "libc", 746 | "redox_users", 747 | "winapi", 748 | ] 749 | 750 | [[package]] 751 | name = "dirs-sys" 752 | version = "0.4.1" 753 | source = "registry+https://github.com/rust-lang/crates.io-index" 754 | checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" 755 | dependencies = [ 756 | "libc", 757 | "option-ext", 758 | "redox_users", 759 | "windows-sys 0.48.0", 760 | ] 761 | 762 | [[package]] 763 | name = "dirs-sys-next" 764 | version = "0.1.2" 765 | source = "registry+https://github.com/rust-lang/crates.io-index" 766 | checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" 767 | dependencies = [ 768 | "libc", 769 | "redox_users", 770 | "winapi", 771 | ] 772 | 773 | [[package]] 774 | name = "dispatch" 775 | version = "0.2.0" 776 | source = "registry+https://github.com/rust-lang/crates.io-index" 777 | checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 778 | 779 | [[package]] 780 | name = "dtoa" 781 | version = "1.0.9" 782 | source = "registry+https://github.com/rust-lang/crates.io-index" 783 | checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" 784 | 785 | [[package]] 786 | name = "dtoa-short" 787 | version = "0.3.4" 788 | source = "registry+https://github.com/rust-lang/crates.io-index" 789 | checksum = "dbaceec3c6e4211c79e7b1800fb9680527106beb2f9c51904a3210c03a448c74" 790 | dependencies = [ 791 | "dtoa", 792 | ] 793 | 794 | [[package]] 795 | name = "dunce" 796 | version = "1.0.4" 797 | source = "registry+https://github.com/rust-lang/crates.io-index" 798 | checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" 799 | 800 | [[package]] 801 | name = "embed-resource" 802 | version = "2.4.2" 803 | source = "registry+https://github.com/rust-lang/crates.io-index" 804 | checksum = "c6985554d0688b687c5cb73898a34fbe3ad6c24c58c238a4d91d5e840670ee9d" 805 | dependencies = [ 806 | "cc", 807 | "memchr", 808 | "rustc_version", 809 | "toml 0.8.12", 810 | "vswhom", 811 | "winreg 0.52.0", 812 | ] 813 | 814 | [[package]] 815 | name = "embed_plist" 816 | version = "1.2.2" 817 | source = "registry+https://github.com/rust-lang/crates.io-index" 818 | checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" 819 | 820 | [[package]] 821 | name = "encoding_rs" 822 | version = "0.8.34" 823 | source = "registry+https://github.com/rust-lang/crates.io-index" 824 | checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" 825 | dependencies = [ 826 | "cfg-if", 827 | ] 828 | 829 | [[package]] 830 | name = "equivalent" 831 | version = "1.0.1" 832 | source = "registry+https://github.com/rust-lang/crates.io-index" 833 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 834 | 835 | [[package]] 836 | name = "errno" 837 | version = "0.3.8" 838 | source = "registry+https://github.com/rust-lang/crates.io-index" 839 | checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" 840 | dependencies = [ 841 | "libc", 842 | "windows-sys 0.52.0", 843 | ] 844 | 845 | [[package]] 846 | name = "fastrand" 847 | version = "2.1.0" 848 | source = "registry+https://github.com/rust-lang/crates.io-index" 849 | checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" 850 | 851 | [[package]] 852 | name = "fdeflate" 853 | version = "0.3.4" 854 | source = "registry+https://github.com/rust-lang/crates.io-index" 855 | checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" 856 | dependencies = [ 857 | "simd-adler32", 858 | ] 859 | 860 | [[package]] 861 | name = "fern" 862 | version = "0.6.2" 863 | source = "registry+https://github.com/rust-lang/crates.io-index" 864 | checksum = "d9f0c14694cbd524c8720dd69b0e3179344f04ebb5f90f2e4a440c6ea3b2f1ee" 865 | dependencies = [ 866 | "log", 867 | ] 868 | 869 | [[package]] 870 | name = "field-offset" 871 | version = "0.3.6" 872 | source = "registry+https://github.com/rust-lang/crates.io-index" 873 | checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" 874 | dependencies = [ 875 | "memoffset", 876 | "rustc_version", 877 | ] 878 | 879 | [[package]] 880 | name = "filetime" 881 | version = "0.2.23" 882 | source = "registry+https://github.com/rust-lang/crates.io-index" 883 | checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" 884 | dependencies = [ 885 | "cfg-if", 886 | "libc", 887 | "redox_syscall 0.4.1", 888 | "windows-sys 0.52.0", 889 | ] 890 | 891 | [[package]] 892 | name = "flate2" 893 | version = "1.0.29" 894 | source = "registry+https://github.com/rust-lang/crates.io-index" 895 | checksum = "4556222738635b7a3417ae6130d8f52201e45a0c4d1a907f0826383adb5f85e7" 896 | dependencies = [ 897 | "crc32fast", 898 | "miniz_oxide", 899 | ] 900 | 901 | [[package]] 902 | name = "fnv" 903 | version = "1.0.7" 904 | source = "registry+https://github.com/rust-lang/crates.io-index" 905 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 906 | 907 | [[package]] 908 | name = "foreign-types" 909 | version = "0.3.2" 910 | source = "registry+https://github.com/rust-lang/crates.io-index" 911 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 912 | dependencies = [ 913 | "foreign-types-shared 0.1.1", 914 | ] 915 | 916 | [[package]] 917 | name = "foreign-types" 918 | version = "0.5.0" 919 | source = "registry+https://github.com/rust-lang/crates.io-index" 920 | checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" 921 | dependencies = [ 922 | "foreign-types-macros", 923 | "foreign-types-shared 0.3.1", 924 | ] 925 | 926 | [[package]] 927 | name = "foreign-types-macros" 928 | version = "0.2.3" 929 | source = "registry+https://github.com/rust-lang/crates.io-index" 930 | checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" 931 | dependencies = [ 932 | "proc-macro2", 933 | "quote", 934 | "syn 2.0.60", 935 | ] 936 | 937 | [[package]] 938 | name = "foreign-types-shared" 939 | version = "0.1.1" 940 | source = "registry+https://github.com/rust-lang/crates.io-index" 941 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 942 | 943 | [[package]] 944 | name = "foreign-types-shared" 945 | version = "0.3.1" 946 | source = "registry+https://github.com/rust-lang/crates.io-index" 947 | checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" 948 | 949 | [[package]] 950 | name = "form_urlencoded" 951 | version = "1.2.1" 952 | source = "registry+https://github.com/rust-lang/crates.io-index" 953 | checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 954 | dependencies = [ 955 | "percent-encoding", 956 | ] 957 | 958 | [[package]] 959 | name = "funty" 960 | version = "2.0.0" 961 | source = "registry+https://github.com/rust-lang/crates.io-index" 962 | checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" 963 | 964 | [[package]] 965 | name = "futf" 966 | version = "0.1.5" 967 | source = "registry+https://github.com/rust-lang/crates.io-index" 968 | checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" 969 | dependencies = [ 970 | "mac", 971 | "new_debug_unreachable", 972 | ] 973 | 974 | [[package]] 975 | name = "futures-channel" 976 | version = "0.3.30" 977 | source = "registry+https://github.com/rust-lang/crates.io-index" 978 | checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" 979 | dependencies = [ 980 | "futures-core", 981 | ] 982 | 983 | [[package]] 984 | name = "futures-core" 985 | version = "0.3.30" 986 | source = "registry+https://github.com/rust-lang/crates.io-index" 987 | checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" 988 | 989 | [[package]] 990 | name = "futures-executor" 991 | version = "0.3.30" 992 | source = "registry+https://github.com/rust-lang/crates.io-index" 993 | checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" 994 | dependencies = [ 995 | "futures-core", 996 | "futures-task", 997 | "futures-util", 998 | ] 999 | 1000 | [[package]] 1001 | name = "futures-io" 1002 | version = "0.3.30" 1003 | source = "registry+https://github.com/rust-lang/crates.io-index" 1004 | checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" 1005 | 1006 | [[package]] 1007 | name = "futures-macro" 1008 | version = "0.3.30" 1009 | source = "registry+https://github.com/rust-lang/crates.io-index" 1010 | checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" 1011 | dependencies = [ 1012 | "proc-macro2", 1013 | "quote", 1014 | "syn 2.0.60", 1015 | ] 1016 | 1017 | [[package]] 1018 | name = "futures-task" 1019 | version = "0.3.30" 1020 | source = "registry+https://github.com/rust-lang/crates.io-index" 1021 | checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" 1022 | 1023 | [[package]] 1024 | name = "futures-util" 1025 | version = "0.3.30" 1026 | source = "registry+https://github.com/rust-lang/crates.io-index" 1027 | checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" 1028 | dependencies = [ 1029 | "futures-core", 1030 | "futures-macro", 1031 | "futures-task", 1032 | "pin-project-lite", 1033 | "pin-utils", 1034 | "slab", 1035 | ] 1036 | 1037 | [[package]] 1038 | name = "fxhash" 1039 | version = "0.2.1" 1040 | source = "registry+https://github.com/rust-lang/crates.io-index" 1041 | checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" 1042 | dependencies = [ 1043 | "byteorder", 1044 | ] 1045 | 1046 | [[package]] 1047 | name = "gdk" 1048 | version = "0.15.4" 1049 | source = "registry+https://github.com/rust-lang/crates.io-index" 1050 | checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8" 1051 | dependencies = [ 1052 | "bitflags 1.3.2", 1053 | "cairo-rs", 1054 | "gdk-pixbuf", 1055 | "gdk-sys", 1056 | "gio", 1057 | "glib", 1058 | "libc", 1059 | "pango", 1060 | ] 1061 | 1062 | [[package]] 1063 | name = "gdk-pixbuf" 1064 | version = "0.15.11" 1065 | source = "registry+https://github.com/rust-lang/crates.io-index" 1066 | checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a" 1067 | dependencies = [ 1068 | "bitflags 1.3.2", 1069 | "gdk-pixbuf-sys", 1070 | "gio", 1071 | "glib", 1072 | "libc", 1073 | ] 1074 | 1075 | [[package]] 1076 | name = "gdk-pixbuf-sys" 1077 | version = "0.15.10" 1078 | source = "registry+https://github.com/rust-lang/crates.io-index" 1079 | checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" 1080 | dependencies = [ 1081 | "gio-sys", 1082 | "glib-sys", 1083 | "gobject-sys", 1084 | "libc", 1085 | "system-deps 6.2.2", 1086 | ] 1087 | 1088 | [[package]] 1089 | name = "gdk-sys" 1090 | version = "0.15.1" 1091 | source = "registry+https://github.com/rust-lang/crates.io-index" 1092 | checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" 1093 | dependencies = [ 1094 | "cairo-sys-rs", 1095 | "gdk-pixbuf-sys", 1096 | "gio-sys", 1097 | "glib-sys", 1098 | "gobject-sys", 1099 | "libc", 1100 | "pango-sys", 1101 | "pkg-config", 1102 | "system-deps 6.2.2", 1103 | ] 1104 | 1105 | [[package]] 1106 | name = "gdkwayland-sys" 1107 | version = "0.15.3" 1108 | source = "registry+https://github.com/rust-lang/crates.io-index" 1109 | checksum = "cca49a59ad8cfdf36ef7330fe7bdfbe1d34323220cc16a0de2679ee773aee2c2" 1110 | dependencies = [ 1111 | "gdk-sys", 1112 | "glib-sys", 1113 | "gobject-sys", 1114 | "libc", 1115 | "pkg-config", 1116 | "system-deps 6.2.2", 1117 | ] 1118 | 1119 | [[package]] 1120 | name = "gdkx11-sys" 1121 | version = "0.15.1" 1122 | source = "registry+https://github.com/rust-lang/crates.io-index" 1123 | checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178" 1124 | dependencies = [ 1125 | "gdk-sys", 1126 | "glib-sys", 1127 | "libc", 1128 | "system-deps 6.2.2", 1129 | "x11", 1130 | ] 1131 | 1132 | [[package]] 1133 | name = "generator" 1134 | version = "0.7.5" 1135 | source = "registry+https://github.com/rust-lang/crates.io-index" 1136 | checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e" 1137 | dependencies = [ 1138 | "cc", 1139 | "libc", 1140 | "log", 1141 | "rustversion", 1142 | "windows 0.48.0", 1143 | ] 1144 | 1145 | [[package]] 1146 | name = "generic-array" 1147 | version = "0.14.7" 1148 | source = "registry+https://github.com/rust-lang/crates.io-index" 1149 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 1150 | dependencies = [ 1151 | "typenum", 1152 | "version_check", 1153 | ] 1154 | 1155 | [[package]] 1156 | name = "getrandom" 1157 | version = "0.1.16" 1158 | source = "registry+https://github.com/rust-lang/crates.io-index" 1159 | checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 1160 | dependencies = [ 1161 | "cfg-if", 1162 | "libc", 1163 | "wasi 0.9.0+wasi-snapshot-preview1", 1164 | ] 1165 | 1166 | [[package]] 1167 | name = "getrandom" 1168 | version = "0.2.14" 1169 | source = "registry+https://github.com/rust-lang/crates.io-index" 1170 | checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" 1171 | dependencies = [ 1172 | "cfg-if", 1173 | "libc", 1174 | "wasi 0.11.0+wasi-snapshot-preview1", 1175 | ] 1176 | 1177 | [[package]] 1178 | name = "gimli" 1179 | version = "0.28.1" 1180 | source = "registry+https://github.com/rust-lang/crates.io-index" 1181 | checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" 1182 | 1183 | [[package]] 1184 | name = "gio" 1185 | version = "0.15.12" 1186 | source = "registry+https://github.com/rust-lang/crates.io-index" 1187 | checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" 1188 | dependencies = [ 1189 | "bitflags 1.3.2", 1190 | "futures-channel", 1191 | "futures-core", 1192 | "futures-io", 1193 | "gio-sys", 1194 | "glib", 1195 | "libc", 1196 | "once_cell", 1197 | "thiserror", 1198 | ] 1199 | 1200 | [[package]] 1201 | name = "gio-sys" 1202 | version = "0.15.10" 1203 | source = "registry+https://github.com/rust-lang/crates.io-index" 1204 | checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" 1205 | dependencies = [ 1206 | "glib-sys", 1207 | "gobject-sys", 1208 | "libc", 1209 | "system-deps 6.2.2", 1210 | "winapi", 1211 | ] 1212 | 1213 | [[package]] 1214 | name = "glib" 1215 | version = "0.15.12" 1216 | source = "registry+https://github.com/rust-lang/crates.io-index" 1217 | checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" 1218 | dependencies = [ 1219 | "bitflags 1.3.2", 1220 | "futures-channel", 1221 | "futures-core", 1222 | "futures-executor", 1223 | "futures-task", 1224 | "glib-macros", 1225 | "glib-sys", 1226 | "gobject-sys", 1227 | "libc", 1228 | "once_cell", 1229 | "smallvec", 1230 | "thiserror", 1231 | ] 1232 | 1233 | [[package]] 1234 | name = "glib-macros" 1235 | version = "0.15.13" 1236 | source = "registry+https://github.com/rust-lang/crates.io-index" 1237 | checksum = "10c6ae9f6fa26f4fb2ac16b528d138d971ead56141de489f8111e259b9df3c4a" 1238 | dependencies = [ 1239 | "anyhow", 1240 | "heck 0.4.1", 1241 | "proc-macro-crate 1.3.1", 1242 | "proc-macro-error", 1243 | "proc-macro2", 1244 | "quote", 1245 | "syn 1.0.109", 1246 | ] 1247 | 1248 | [[package]] 1249 | name = "glib-sys" 1250 | version = "0.15.10" 1251 | source = "registry+https://github.com/rust-lang/crates.io-index" 1252 | checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" 1253 | dependencies = [ 1254 | "libc", 1255 | "system-deps 6.2.2", 1256 | ] 1257 | 1258 | [[package]] 1259 | name = "glob" 1260 | version = "0.3.1" 1261 | source = "registry+https://github.com/rust-lang/crates.io-index" 1262 | checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" 1263 | 1264 | [[package]] 1265 | name = "global-hotkey" 1266 | version = "0.5.4" 1267 | source = "registry+https://github.com/rust-lang/crates.io-index" 1268 | checksum = "89cb13e8c52c87e28a46eae3e5e65b8f0cd465c4c9e67b13d56c70412e792bc3" 1269 | dependencies = [ 1270 | "bitflags 2.5.0", 1271 | "cocoa 0.25.0", 1272 | "crossbeam-channel", 1273 | "keyboard-types", 1274 | "objc", 1275 | "once_cell", 1276 | "thiserror", 1277 | "windows-sys 0.52.0", 1278 | "x11-dl", 1279 | ] 1280 | 1281 | [[package]] 1282 | name = "globset" 1283 | version = "0.4.14" 1284 | source = "registry+https://github.com/rust-lang/crates.io-index" 1285 | checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" 1286 | dependencies = [ 1287 | "aho-corasick", 1288 | "bstr", 1289 | "log", 1290 | "regex-automata 0.4.6", 1291 | "regex-syntax 0.8.3", 1292 | ] 1293 | 1294 | [[package]] 1295 | name = "gobject-sys" 1296 | version = "0.15.10" 1297 | source = "registry+https://github.com/rust-lang/crates.io-index" 1298 | checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" 1299 | dependencies = [ 1300 | "glib-sys", 1301 | "libc", 1302 | "system-deps 6.2.2", 1303 | ] 1304 | 1305 | [[package]] 1306 | name = "gtk" 1307 | version = "0.15.5" 1308 | source = "registry+https://github.com/rust-lang/crates.io-index" 1309 | checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0" 1310 | dependencies = [ 1311 | "atk", 1312 | "bitflags 1.3.2", 1313 | "cairo-rs", 1314 | "field-offset", 1315 | "futures-channel", 1316 | "gdk", 1317 | "gdk-pixbuf", 1318 | "gio", 1319 | "glib", 1320 | "gtk-sys", 1321 | "gtk3-macros", 1322 | "libc", 1323 | "once_cell", 1324 | "pango", 1325 | "pkg-config", 1326 | ] 1327 | 1328 | [[package]] 1329 | name = "gtk-sys" 1330 | version = "0.15.3" 1331 | source = "registry+https://github.com/rust-lang/crates.io-index" 1332 | checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84" 1333 | dependencies = [ 1334 | "atk-sys", 1335 | "cairo-sys-rs", 1336 | "gdk-pixbuf-sys", 1337 | "gdk-sys", 1338 | "gio-sys", 1339 | "glib-sys", 1340 | "gobject-sys", 1341 | "libc", 1342 | "pango-sys", 1343 | "system-deps 6.2.2", 1344 | ] 1345 | 1346 | [[package]] 1347 | name = "gtk3-macros" 1348 | version = "0.15.6" 1349 | source = "registry+https://github.com/rust-lang/crates.io-index" 1350 | checksum = "684c0456c086e8e7e9af73ec5b84e35938df394712054550e81558d21c44ab0d" 1351 | dependencies = [ 1352 | "anyhow", 1353 | "proc-macro-crate 1.3.1", 1354 | "proc-macro-error", 1355 | "proc-macro2", 1356 | "quote", 1357 | "syn 1.0.109", 1358 | ] 1359 | 1360 | [[package]] 1361 | name = "hashbrown" 1362 | version = "0.12.3" 1363 | source = "registry+https://github.com/rust-lang/crates.io-index" 1364 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 1365 | dependencies = [ 1366 | "ahash", 1367 | ] 1368 | 1369 | [[package]] 1370 | name = "hashbrown" 1371 | version = "0.14.5" 1372 | source = "registry+https://github.com/rust-lang/crates.io-index" 1373 | checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 1374 | 1375 | [[package]] 1376 | name = "heck" 1377 | version = "0.3.3" 1378 | source = "registry+https://github.com/rust-lang/crates.io-index" 1379 | checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" 1380 | dependencies = [ 1381 | "unicode-segmentation", 1382 | ] 1383 | 1384 | [[package]] 1385 | name = "heck" 1386 | version = "0.4.1" 1387 | source = "registry+https://github.com/rust-lang/crates.io-index" 1388 | checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 1389 | 1390 | [[package]] 1391 | name = "heck" 1392 | version = "0.5.0" 1393 | source = "registry+https://github.com/rust-lang/crates.io-index" 1394 | checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 1395 | 1396 | [[package]] 1397 | name = "hermit-abi" 1398 | version = "0.3.9" 1399 | source = "registry+https://github.com/rust-lang/crates.io-index" 1400 | checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" 1401 | 1402 | [[package]] 1403 | name = "hex" 1404 | version = "0.4.3" 1405 | source = "registry+https://github.com/rust-lang/crates.io-index" 1406 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1407 | 1408 | [[package]] 1409 | name = "home-assistant-assist-desktop" 1410 | version = "1.4.0" 1411 | dependencies = [ 1412 | "dirs 5.0.1", 1413 | "global-hotkey", 1414 | "log", 1415 | "opener", 1416 | "serde", 1417 | "serde_json", 1418 | "tauri", 1419 | "tauri-build", 1420 | "tauri-plugin-autostart", 1421 | "tauri-plugin-log", 1422 | "tokio", 1423 | "url", 1424 | ] 1425 | 1426 | [[package]] 1427 | name = "html5ever" 1428 | version = "0.26.0" 1429 | source = "registry+https://github.com/rust-lang/crates.io-index" 1430 | checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" 1431 | dependencies = [ 1432 | "log", 1433 | "mac", 1434 | "markup5ever", 1435 | "proc-macro2", 1436 | "quote", 1437 | "syn 1.0.109", 1438 | ] 1439 | 1440 | [[package]] 1441 | name = "http" 1442 | version = "0.2.12" 1443 | source = "registry+https://github.com/rust-lang/crates.io-index" 1444 | checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" 1445 | dependencies = [ 1446 | "bytes", 1447 | "fnv", 1448 | "itoa 1.0.11", 1449 | ] 1450 | 1451 | [[package]] 1452 | name = "http-range" 1453 | version = "0.1.5" 1454 | source = "registry+https://github.com/rust-lang/crates.io-index" 1455 | checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" 1456 | 1457 | [[package]] 1458 | name = "iana-time-zone" 1459 | version = "0.1.60" 1460 | source = "registry+https://github.com/rust-lang/crates.io-index" 1461 | checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" 1462 | dependencies = [ 1463 | "android_system_properties", 1464 | "core-foundation-sys", 1465 | "iana-time-zone-haiku", 1466 | "js-sys", 1467 | "wasm-bindgen", 1468 | "windows-core", 1469 | ] 1470 | 1471 | [[package]] 1472 | name = "iana-time-zone-haiku" 1473 | version = "0.1.2" 1474 | source = "registry+https://github.com/rust-lang/crates.io-index" 1475 | checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 1476 | dependencies = [ 1477 | "cc", 1478 | ] 1479 | 1480 | [[package]] 1481 | name = "ico" 1482 | version = "0.3.0" 1483 | source = "registry+https://github.com/rust-lang/crates.io-index" 1484 | checksum = "e3804960be0bb5e4edb1e1ad67afd321a9ecfd875c3e65c099468fd2717d7cae" 1485 | dependencies = [ 1486 | "byteorder", 1487 | "png", 1488 | ] 1489 | 1490 | [[package]] 1491 | name = "ident_case" 1492 | version = "1.0.1" 1493 | source = "registry+https://github.com/rust-lang/crates.io-index" 1494 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 1495 | 1496 | [[package]] 1497 | name = "idna" 1498 | version = "0.5.0" 1499 | source = "registry+https://github.com/rust-lang/crates.io-index" 1500 | checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" 1501 | dependencies = [ 1502 | "unicode-bidi", 1503 | "unicode-normalization", 1504 | ] 1505 | 1506 | [[package]] 1507 | name = "ignore" 1508 | version = "0.4.22" 1509 | source = "registry+https://github.com/rust-lang/crates.io-index" 1510 | checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" 1511 | dependencies = [ 1512 | "crossbeam-deque", 1513 | "globset", 1514 | "log", 1515 | "memchr", 1516 | "regex-automata 0.4.6", 1517 | "same-file", 1518 | "walkdir", 1519 | "winapi-util", 1520 | ] 1521 | 1522 | [[package]] 1523 | name = "image" 1524 | version = "0.24.9" 1525 | source = "registry+https://github.com/rust-lang/crates.io-index" 1526 | checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" 1527 | dependencies = [ 1528 | "bytemuck", 1529 | "byteorder", 1530 | "color_quant", 1531 | "num-traits", 1532 | ] 1533 | 1534 | [[package]] 1535 | name = "indexmap" 1536 | version = "1.9.3" 1537 | source = "registry+https://github.com/rust-lang/crates.io-index" 1538 | checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" 1539 | dependencies = [ 1540 | "autocfg", 1541 | "hashbrown 0.12.3", 1542 | "serde", 1543 | ] 1544 | 1545 | [[package]] 1546 | name = "indexmap" 1547 | version = "2.2.6" 1548 | source = "registry+https://github.com/rust-lang/crates.io-index" 1549 | checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" 1550 | dependencies = [ 1551 | "equivalent", 1552 | "hashbrown 0.14.5", 1553 | "serde", 1554 | ] 1555 | 1556 | [[package]] 1557 | name = "infer" 1558 | version = "0.13.0" 1559 | source = "registry+https://github.com/rust-lang/crates.io-index" 1560 | checksum = "f551f8c3a39f68f986517db0d1759de85881894fdc7db798bd2a9df9cb04b7fc" 1561 | dependencies = [ 1562 | "cfb", 1563 | ] 1564 | 1565 | [[package]] 1566 | name = "instant" 1567 | version = "0.1.12" 1568 | source = "registry+https://github.com/rust-lang/crates.io-index" 1569 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 1570 | dependencies = [ 1571 | "cfg-if", 1572 | ] 1573 | 1574 | [[package]] 1575 | name = "itoa" 1576 | version = "0.4.8" 1577 | source = "registry+https://github.com/rust-lang/crates.io-index" 1578 | checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" 1579 | 1580 | [[package]] 1581 | name = "itoa" 1582 | version = "1.0.11" 1583 | source = "registry+https://github.com/rust-lang/crates.io-index" 1584 | checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" 1585 | 1586 | [[package]] 1587 | name = "javascriptcore-rs" 1588 | version = "0.16.0" 1589 | source = "registry+https://github.com/rust-lang/crates.io-index" 1590 | checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c" 1591 | dependencies = [ 1592 | "bitflags 1.3.2", 1593 | "glib", 1594 | "javascriptcore-rs-sys", 1595 | ] 1596 | 1597 | [[package]] 1598 | name = "javascriptcore-rs-sys" 1599 | version = "0.4.0" 1600 | source = "registry+https://github.com/rust-lang/crates.io-index" 1601 | checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c" 1602 | dependencies = [ 1603 | "glib-sys", 1604 | "gobject-sys", 1605 | "libc", 1606 | "system-deps 5.0.0", 1607 | ] 1608 | 1609 | [[package]] 1610 | name = "jni" 1611 | version = "0.20.0" 1612 | source = "registry+https://github.com/rust-lang/crates.io-index" 1613 | checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" 1614 | dependencies = [ 1615 | "cesu8", 1616 | "combine", 1617 | "jni-sys", 1618 | "log", 1619 | "thiserror", 1620 | "walkdir", 1621 | ] 1622 | 1623 | [[package]] 1624 | name = "jni-sys" 1625 | version = "0.3.0" 1626 | source = "registry+https://github.com/rust-lang/crates.io-index" 1627 | checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 1628 | 1629 | [[package]] 1630 | name = "js-sys" 1631 | version = "0.3.69" 1632 | source = "registry+https://github.com/rust-lang/crates.io-index" 1633 | checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" 1634 | dependencies = [ 1635 | "wasm-bindgen", 1636 | ] 1637 | 1638 | [[package]] 1639 | name = "json-patch" 1640 | version = "1.2.0" 1641 | source = "registry+https://github.com/rust-lang/crates.io-index" 1642 | checksum = "55ff1e1486799e3f64129f8ccad108b38290df9cd7015cd31bed17239f0789d6" 1643 | dependencies = [ 1644 | "serde", 1645 | "serde_json", 1646 | "thiserror", 1647 | "treediff", 1648 | ] 1649 | 1650 | [[package]] 1651 | name = "keyboard-types" 1652 | version = "0.7.0" 1653 | source = "registry+https://github.com/rust-lang/crates.io-index" 1654 | checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" 1655 | dependencies = [ 1656 | "bitflags 2.5.0", 1657 | "serde", 1658 | "unicode-segmentation", 1659 | ] 1660 | 1661 | [[package]] 1662 | name = "kuchikiki" 1663 | version = "0.8.2" 1664 | source = "registry+https://github.com/rust-lang/crates.io-index" 1665 | checksum = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8" 1666 | dependencies = [ 1667 | "cssparser", 1668 | "html5ever", 1669 | "indexmap 1.9.3", 1670 | "matches", 1671 | "selectors", 1672 | ] 1673 | 1674 | [[package]] 1675 | name = "lazy_static" 1676 | version = "1.4.0" 1677 | source = "registry+https://github.com/rust-lang/crates.io-index" 1678 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1679 | 1680 | [[package]] 1681 | name = "libappindicator" 1682 | version = "0.7.1" 1683 | source = "registry+https://github.com/rust-lang/crates.io-index" 1684 | checksum = "db2d3cb96d092b4824cb306c9e544c856a4cb6210c1081945187f7f1924b47e8" 1685 | dependencies = [ 1686 | "glib", 1687 | "gtk", 1688 | "gtk-sys", 1689 | "libappindicator-sys", 1690 | "log", 1691 | ] 1692 | 1693 | [[package]] 1694 | name = "libappindicator-sys" 1695 | version = "0.7.3" 1696 | source = "registry+https://github.com/rust-lang/crates.io-index" 1697 | checksum = "f1b3b6681973cea8cc3bce7391e6d7d5502720b80a581c9a95c9cbaf592826aa" 1698 | dependencies = [ 1699 | "gtk-sys", 1700 | "libloading", 1701 | "once_cell", 1702 | ] 1703 | 1704 | [[package]] 1705 | name = "libc" 1706 | version = "0.2.153" 1707 | source = "registry+https://github.com/rust-lang/crates.io-index" 1708 | checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" 1709 | 1710 | [[package]] 1711 | name = "libdbus-sys" 1712 | version = "0.2.5" 1713 | source = "registry+https://github.com/rust-lang/crates.io-index" 1714 | checksum = "06085512b750d640299b79be4bad3d2fa90a9c00b1fd9e1b46364f66f0485c72" 1715 | dependencies = [ 1716 | "cc", 1717 | "pkg-config", 1718 | ] 1719 | 1720 | [[package]] 1721 | name = "libloading" 1722 | version = "0.7.4" 1723 | source = "registry+https://github.com/rust-lang/crates.io-index" 1724 | checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" 1725 | dependencies = [ 1726 | "cfg-if", 1727 | "winapi", 1728 | ] 1729 | 1730 | [[package]] 1731 | name = "libredox" 1732 | version = "0.1.3" 1733 | source = "registry+https://github.com/rust-lang/crates.io-index" 1734 | checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" 1735 | dependencies = [ 1736 | "bitflags 2.5.0", 1737 | "libc", 1738 | ] 1739 | 1740 | [[package]] 1741 | name = "line-wrap" 1742 | version = "0.2.0" 1743 | source = "registry+https://github.com/rust-lang/crates.io-index" 1744 | checksum = "dd1bc4d24ad230d21fb898d1116b1801d7adfc449d42026475862ab48b11e70e" 1745 | 1746 | [[package]] 1747 | name = "linux-raw-sys" 1748 | version = "0.4.13" 1749 | source = "registry+https://github.com/rust-lang/crates.io-index" 1750 | checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" 1751 | 1752 | [[package]] 1753 | name = "lock_api" 1754 | version = "0.4.12" 1755 | source = "registry+https://github.com/rust-lang/crates.io-index" 1756 | checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" 1757 | dependencies = [ 1758 | "autocfg", 1759 | "scopeguard", 1760 | ] 1761 | 1762 | [[package]] 1763 | name = "log" 1764 | version = "0.4.22" 1765 | source = "registry+https://github.com/rust-lang/crates.io-index" 1766 | checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" 1767 | dependencies = [ 1768 | "value-bag", 1769 | ] 1770 | 1771 | [[package]] 1772 | name = "loom" 1773 | version = "0.5.6" 1774 | source = "registry+https://github.com/rust-lang/crates.io-index" 1775 | checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" 1776 | dependencies = [ 1777 | "cfg-if", 1778 | "generator", 1779 | "scoped-tls", 1780 | "serde", 1781 | "serde_json", 1782 | "tracing", 1783 | "tracing-subscriber", 1784 | ] 1785 | 1786 | [[package]] 1787 | name = "mac" 1788 | version = "0.1.1" 1789 | source = "registry+https://github.com/rust-lang/crates.io-index" 1790 | checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" 1791 | 1792 | [[package]] 1793 | name = "malloc_buf" 1794 | version = "0.0.6" 1795 | source = "registry+https://github.com/rust-lang/crates.io-index" 1796 | checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 1797 | dependencies = [ 1798 | "libc", 1799 | ] 1800 | 1801 | [[package]] 1802 | name = "markup5ever" 1803 | version = "0.11.0" 1804 | source = "registry+https://github.com/rust-lang/crates.io-index" 1805 | checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" 1806 | dependencies = [ 1807 | "log", 1808 | "phf 0.10.1", 1809 | "phf_codegen 0.10.0", 1810 | "string_cache", 1811 | "string_cache_codegen", 1812 | "tendril", 1813 | ] 1814 | 1815 | [[package]] 1816 | name = "matchers" 1817 | version = "0.1.0" 1818 | source = "registry+https://github.com/rust-lang/crates.io-index" 1819 | checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" 1820 | dependencies = [ 1821 | "regex-automata 0.1.10", 1822 | ] 1823 | 1824 | [[package]] 1825 | name = "matches" 1826 | version = "0.1.10" 1827 | source = "registry+https://github.com/rust-lang/crates.io-index" 1828 | checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" 1829 | 1830 | [[package]] 1831 | name = "memchr" 1832 | version = "2.7.2" 1833 | source = "registry+https://github.com/rust-lang/crates.io-index" 1834 | checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" 1835 | 1836 | [[package]] 1837 | name = "memoffset" 1838 | version = "0.9.1" 1839 | source = "registry+https://github.com/rust-lang/crates.io-index" 1840 | checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" 1841 | dependencies = [ 1842 | "autocfg", 1843 | ] 1844 | 1845 | [[package]] 1846 | name = "miniz_oxide" 1847 | version = "0.7.2" 1848 | source = "registry+https://github.com/rust-lang/crates.io-index" 1849 | checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" 1850 | dependencies = [ 1851 | "adler", 1852 | "simd-adler32", 1853 | ] 1854 | 1855 | [[package]] 1856 | name = "ndk" 1857 | version = "0.6.0" 1858 | source = "registry+https://github.com/rust-lang/crates.io-index" 1859 | checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" 1860 | dependencies = [ 1861 | "bitflags 1.3.2", 1862 | "jni-sys", 1863 | "ndk-sys", 1864 | "num_enum", 1865 | "thiserror", 1866 | ] 1867 | 1868 | [[package]] 1869 | name = "ndk-context" 1870 | version = "0.1.1" 1871 | source = "registry+https://github.com/rust-lang/crates.io-index" 1872 | checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" 1873 | 1874 | [[package]] 1875 | name = "ndk-sys" 1876 | version = "0.3.0" 1877 | source = "registry+https://github.com/rust-lang/crates.io-index" 1878 | checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" 1879 | dependencies = [ 1880 | "jni-sys", 1881 | ] 1882 | 1883 | [[package]] 1884 | name = "new_debug_unreachable" 1885 | version = "1.0.6" 1886 | source = "registry+https://github.com/rust-lang/crates.io-index" 1887 | checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" 1888 | 1889 | [[package]] 1890 | name = "nodrop" 1891 | version = "0.1.14" 1892 | source = "registry+https://github.com/rust-lang/crates.io-index" 1893 | checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" 1894 | 1895 | [[package]] 1896 | name = "normpath" 1897 | version = "1.2.0" 1898 | source = "registry+https://github.com/rust-lang/crates.io-index" 1899 | checksum = "5831952a9476f2fed74b77d74182fa5ddc4d21c72ec45a333b250e3ed0272804" 1900 | dependencies = [ 1901 | "windows-sys 0.52.0", 1902 | ] 1903 | 1904 | [[package]] 1905 | name = "nu-ansi-term" 1906 | version = "0.46.0" 1907 | source = "registry+https://github.com/rust-lang/crates.io-index" 1908 | checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" 1909 | dependencies = [ 1910 | "overload", 1911 | "winapi", 1912 | ] 1913 | 1914 | [[package]] 1915 | name = "num-conv" 1916 | version = "0.1.0" 1917 | source = "registry+https://github.com/rust-lang/crates.io-index" 1918 | checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 1919 | 1920 | [[package]] 1921 | name = "num-traits" 1922 | version = "0.2.18" 1923 | source = "registry+https://github.com/rust-lang/crates.io-index" 1924 | checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" 1925 | dependencies = [ 1926 | "autocfg", 1927 | ] 1928 | 1929 | [[package]] 1930 | name = "num_cpus" 1931 | version = "1.16.0" 1932 | source = "registry+https://github.com/rust-lang/crates.io-index" 1933 | checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" 1934 | dependencies = [ 1935 | "hermit-abi", 1936 | "libc", 1937 | ] 1938 | 1939 | [[package]] 1940 | name = "num_enum" 1941 | version = "0.5.11" 1942 | source = "registry+https://github.com/rust-lang/crates.io-index" 1943 | checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" 1944 | dependencies = [ 1945 | "num_enum_derive", 1946 | ] 1947 | 1948 | [[package]] 1949 | name = "num_enum_derive" 1950 | version = "0.5.11" 1951 | source = "registry+https://github.com/rust-lang/crates.io-index" 1952 | checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" 1953 | dependencies = [ 1954 | "proc-macro-crate 1.3.1", 1955 | "proc-macro2", 1956 | "quote", 1957 | "syn 1.0.109", 1958 | ] 1959 | 1960 | [[package]] 1961 | name = "num_threads" 1962 | version = "0.1.7" 1963 | source = "registry+https://github.com/rust-lang/crates.io-index" 1964 | checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" 1965 | dependencies = [ 1966 | "libc", 1967 | ] 1968 | 1969 | [[package]] 1970 | name = "objc" 1971 | version = "0.2.7" 1972 | source = "registry+https://github.com/rust-lang/crates.io-index" 1973 | checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 1974 | dependencies = [ 1975 | "malloc_buf", 1976 | "objc_exception", 1977 | ] 1978 | 1979 | [[package]] 1980 | name = "objc_exception" 1981 | version = "0.1.2" 1982 | source = "registry+https://github.com/rust-lang/crates.io-index" 1983 | checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" 1984 | dependencies = [ 1985 | "cc", 1986 | ] 1987 | 1988 | [[package]] 1989 | name = "objc_id" 1990 | version = "0.1.1" 1991 | source = "registry+https://github.com/rust-lang/crates.io-index" 1992 | checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" 1993 | dependencies = [ 1994 | "objc", 1995 | ] 1996 | 1997 | [[package]] 1998 | name = "object" 1999 | version = "0.32.2" 2000 | source = "registry+https://github.com/rust-lang/crates.io-index" 2001 | checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" 2002 | dependencies = [ 2003 | "memchr", 2004 | ] 2005 | 2006 | [[package]] 2007 | name = "once_cell" 2008 | version = "1.19.0" 2009 | source = "registry+https://github.com/rust-lang/crates.io-index" 2010 | checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" 2011 | 2012 | [[package]] 2013 | name = "open" 2014 | version = "3.2.0" 2015 | source = "registry+https://github.com/rust-lang/crates.io-index" 2016 | checksum = "2078c0039e6a54a0c42c28faa984e115fb4c2d5bf2208f77d1961002df8576f8" 2017 | dependencies = [ 2018 | "pathdiff", 2019 | "windows-sys 0.42.0", 2020 | ] 2021 | 2022 | [[package]] 2023 | name = "opener" 2024 | version = "0.7.1" 2025 | source = "registry+https://github.com/rust-lang/crates.io-index" 2026 | checksum = "f8df34be653210fbe9ffaff41d3b92721c56ce82dfee58ee684f9afb5e3a90c0" 2027 | dependencies = [ 2028 | "bstr", 2029 | "dbus", 2030 | "normpath", 2031 | "windows-sys 0.52.0", 2032 | ] 2033 | 2034 | [[package]] 2035 | name = "option-ext" 2036 | version = "0.2.0" 2037 | source = "registry+https://github.com/rust-lang/crates.io-index" 2038 | checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" 2039 | 2040 | [[package]] 2041 | name = "overload" 2042 | version = "0.1.1" 2043 | source = "registry+https://github.com/rust-lang/crates.io-index" 2044 | checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" 2045 | 2046 | [[package]] 2047 | name = "pango" 2048 | version = "0.15.10" 2049 | source = "registry+https://github.com/rust-lang/crates.io-index" 2050 | checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" 2051 | dependencies = [ 2052 | "bitflags 1.3.2", 2053 | "glib", 2054 | "libc", 2055 | "once_cell", 2056 | "pango-sys", 2057 | ] 2058 | 2059 | [[package]] 2060 | name = "pango-sys" 2061 | version = "0.15.10" 2062 | source = "registry+https://github.com/rust-lang/crates.io-index" 2063 | checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" 2064 | dependencies = [ 2065 | "glib-sys", 2066 | "gobject-sys", 2067 | "libc", 2068 | "system-deps 6.2.2", 2069 | ] 2070 | 2071 | [[package]] 2072 | name = "parking_lot" 2073 | version = "0.12.2" 2074 | source = "registry+https://github.com/rust-lang/crates.io-index" 2075 | checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" 2076 | dependencies = [ 2077 | "lock_api", 2078 | "parking_lot_core", 2079 | ] 2080 | 2081 | [[package]] 2082 | name = "parking_lot_core" 2083 | version = "0.9.10" 2084 | source = "registry+https://github.com/rust-lang/crates.io-index" 2085 | checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" 2086 | dependencies = [ 2087 | "cfg-if", 2088 | "libc", 2089 | "redox_syscall 0.5.1", 2090 | "smallvec", 2091 | "windows-targets 0.52.5", 2092 | ] 2093 | 2094 | [[package]] 2095 | name = "pathdiff" 2096 | version = "0.2.1" 2097 | source = "registry+https://github.com/rust-lang/crates.io-index" 2098 | checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" 2099 | 2100 | [[package]] 2101 | name = "percent-encoding" 2102 | version = "2.3.1" 2103 | source = "registry+https://github.com/rust-lang/crates.io-index" 2104 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 2105 | 2106 | [[package]] 2107 | name = "phf" 2108 | version = "0.8.0" 2109 | source = "registry+https://github.com/rust-lang/crates.io-index" 2110 | checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" 2111 | dependencies = [ 2112 | "phf_macros 0.8.0", 2113 | "phf_shared 0.8.0", 2114 | "proc-macro-hack", 2115 | ] 2116 | 2117 | [[package]] 2118 | name = "phf" 2119 | version = "0.10.1" 2120 | source = "registry+https://github.com/rust-lang/crates.io-index" 2121 | checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" 2122 | dependencies = [ 2123 | "phf_shared 0.10.0", 2124 | ] 2125 | 2126 | [[package]] 2127 | name = "phf" 2128 | version = "0.11.2" 2129 | source = "registry+https://github.com/rust-lang/crates.io-index" 2130 | checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" 2131 | dependencies = [ 2132 | "phf_macros 0.11.2", 2133 | "phf_shared 0.11.2", 2134 | ] 2135 | 2136 | [[package]] 2137 | name = "phf_codegen" 2138 | version = "0.8.0" 2139 | source = "registry+https://github.com/rust-lang/crates.io-index" 2140 | checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" 2141 | dependencies = [ 2142 | "phf_generator 0.8.0", 2143 | "phf_shared 0.8.0", 2144 | ] 2145 | 2146 | [[package]] 2147 | name = "phf_codegen" 2148 | version = "0.10.0" 2149 | source = "registry+https://github.com/rust-lang/crates.io-index" 2150 | checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" 2151 | dependencies = [ 2152 | "phf_generator 0.10.0", 2153 | "phf_shared 0.10.0", 2154 | ] 2155 | 2156 | [[package]] 2157 | name = "phf_generator" 2158 | version = "0.8.0" 2159 | source = "registry+https://github.com/rust-lang/crates.io-index" 2160 | checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" 2161 | dependencies = [ 2162 | "phf_shared 0.8.0", 2163 | "rand 0.7.3", 2164 | ] 2165 | 2166 | [[package]] 2167 | name = "phf_generator" 2168 | version = "0.10.0" 2169 | source = "registry+https://github.com/rust-lang/crates.io-index" 2170 | checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" 2171 | dependencies = [ 2172 | "phf_shared 0.10.0", 2173 | "rand 0.8.5", 2174 | ] 2175 | 2176 | [[package]] 2177 | name = "phf_generator" 2178 | version = "0.11.2" 2179 | source = "registry+https://github.com/rust-lang/crates.io-index" 2180 | checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" 2181 | dependencies = [ 2182 | "phf_shared 0.11.2", 2183 | "rand 0.8.5", 2184 | ] 2185 | 2186 | [[package]] 2187 | name = "phf_macros" 2188 | version = "0.8.0" 2189 | source = "registry+https://github.com/rust-lang/crates.io-index" 2190 | checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" 2191 | dependencies = [ 2192 | "phf_generator 0.8.0", 2193 | "phf_shared 0.8.0", 2194 | "proc-macro-hack", 2195 | "proc-macro2", 2196 | "quote", 2197 | "syn 1.0.109", 2198 | ] 2199 | 2200 | [[package]] 2201 | name = "phf_macros" 2202 | version = "0.11.2" 2203 | source = "registry+https://github.com/rust-lang/crates.io-index" 2204 | checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" 2205 | dependencies = [ 2206 | "phf_generator 0.11.2", 2207 | "phf_shared 0.11.2", 2208 | "proc-macro2", 2209 | "quote", 2210 | "syn 2.0.60", 2211 | ] 2212 | 2213 | [[package]] 2214 | name = "phf_shared" 2215 | version = "0.8.0" 2216 | source = "registry+https://github.com/rust-lang/crates.io-index" 2217 | checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" 2218 | dependencies = [ 2219 | "siphasher", 2220 | ] 2221 | 2222 | [[package]] 2223 | name = "phf_shared" 2224 | version = "0.10.0" 2225 | source = "registry+https://github.com/rust-lang/crates.io-index" 2226 | checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" 2227 | dependencies = [ 2228 | "siphasher", 2229 | ] 2230 | 2231 | [[package]] 2232 | name = "phf_shared" 2233 | version = "0.11.2" 2234 | source = "registry+https://github.com/rust-lang/crates.io-index" 2235 | checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" 2236 | dependencies = [ 2237 | "siphasher", 2238 | ] 2239 | 2240 | [[package]] 2241 | name = "pin-project-lite" 2242 | version = "0.2.14" 2243 | source = "registry+https://github.com/rust-lang/crates.io-index" 2244 | checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" 2245 | 2246 | [[package]] 2247 | name = "pin-utils" 2248 | version = "0.1.0" 2249 | source = "registry+https://github.com/rust-lang/crates.io-index" 2250 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 2251 | 2252 | [[package]] 2253 | name = "pkg-config" 2254 | version = "0.3.30" 2255 | source = "registry+https://github.com/rust-lang/crates.io-index" 2256 | checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" 2257 | 2258 | [[package]] 2259 | name = "plist" 2260 | version = "1.6.1" 2261 | source = "registry+https://github.com/rust-lang/crates.io-index" 2262 | checksum = "d9d34169e64b3c7a80c8621a48adaf44e0cf62c78a9b25dd9dd35f1881a17cf9" 2263 | dependencies = [ 2264 | "base64 0.21.7", 2265 | "indexmap 2.2.6", 2266 | "line-wrap", 2267 | "quick-xml", 2268 | "serde", 2269 | "time", 2270 | ] 2271 | 2272 | [[package]] 2273 | name = "png" 2274 | version = "0.17.13" 2275 | source = "registry+https://github.com/rust-lang/crates.io-index" 2276 | checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" 2277 | dependencies = [ 2278 | "bitflags 1.3.2", 2279 | "crc32fast", 2280 | "fdeflate", 2281 | "flate2", 2282 | "miniz_oxide", 2283 | ] 2284 | 2285 | [[package]] 2286 | name = "powerfmt" 2287 | version = "0.2.0" 2288 | source = "registry+https://github.com/rust-lang/crates.io-index" 2289 | checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 2290 | 2291 | [[package]] 2292 | name = "ppv-lite86" 2293 | version = "0.2.17" 2294 | source = "registry+https://github.com/rust-lang/crates.io-index" 2295 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 2296 | 2297 | [[package]] 2298 | name = "precomputed-hash" 2299 | version = "0.1.1" 2300 | source = "registry+https://github.com/rust-lang/crates.io-index" 2301 | checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" 2302 | 2303 | [[package]] 2304 | name = "proc-macro-crate" 2305 | version = "1.3.1" 2306 | source = "registry+https://github.com/rust-lang/crates.io-index" 2307 | checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" 2308 | dependencies = [ 2309 | "once_cell", 2310 | "toml_edit 0.19.15", 2311 | ] 2312 | 2313 | [[package]] 2314 | name = "proc-macro-crate" 2315 | version = "3.1.0" 2316 | source = "registry+https://github.com/rust-lang/crates.io-index" 2317 | checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" 2318 | dependencies = [ 2319 | "toml_edit 0.21.1", 2320 | ] 2321 | 2322 | [[package]] 2323 | name = "proc-macro-error" 2324 | version = "1.0.4" 2325 | source = "registry+https://github.com/rust-lang/crates.io-index" 2326 | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 2327 | dependencies = [ 2328 | "proc-macro-error-attr", 2329 | "proc-macro2", 2330 | "quote", 2331 | "syn 1.0.109", 2332 | "version_check", 2333 | ] 2334 | 2335 | [[package]] 2336 | name = "proc-macro-error-attr" 2337 | version = "1.0.4" 2338 | source = "registry+https://github.com/rust-lang/crates.io-index" 2339 | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 2340 | dependencies = [ 2341 | "proc-macro2", 2342 | "quote", 2343 | "version_check", 2344 | ] 2345 | 2346 | [[package]] 2347 | name = "proc-macro-hack" 2348 | version = "0.5.20+deprecated" 2349 | source = "registry+https://github.com/rust-lang/crates.io-index" 2350 | checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" 2351 | 2352 | [[package]] 2353 | name = "proc-macro2" 2354 | version = "1.0.81" 2355 | source = "registry+https://github.com/rust-lang/crates.io-index" 2356 | checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" 2357 | dependencies = [ 2358 | "unicode-ident", 2359 | ] 2360 | 2361 | [[package]] 2362 | name = "ptr_meta" 2363 | version = "0.1.4" 2364 | source = "registry+https://github.com/rust-lang/crates.io-index" 2365 | checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" 2366 | dependencies = [ 2367 | "ptr_meta_derive", 2368 | ] 2369 | 2370 | [[package]] 2371 | name = "ptr_meta_derive" 2372 | version = "0.1.4" 2373 | source = "registry+https://github.com/rust-lang/crates.io-index" 2374 | checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" 2375 | dependencies = [ 2376 | "proc-macro2", 2377 | "quote", 2378 | "syn 1.0.109", 2379 | ] 2380 | 2381 | [[package]] 2382 | name = "quick-xml" 2383 | version = "0.31.0" 2384 | source = "registry+https://github.com/rust-lang/crates.io-index" 2385 | checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" 2386 | dependencies = [ 2387 | "memchr", 2388 | ] 2389 | 2390 | [[package]] 2391 | name = "quote" 2392 | version = "1.0.36" 2393 | source = "registry+https://github.com/rust-lang/crates.io-index" 2394 | checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" 2395 | dependencies = [ 2396 | "proc-macro2", 2397 | ] 2398 | 2399 | [[package]] 2400 | name = "radium" 2401 | version = "0.7.0" 2402 | source = "registry+https://github.com/rust-lang/crates.io-index" 2403 | checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" 2404 | 2405 | [[package]] 2406 | name = "rand" 2407 | version = "0.7.3" 2408 | source = "registry+https://github.com/rust-lang/crates.io-index" 2409 | checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 2410 | dependencies = [ 2411 | "getrandom 0.1.16", 2412 | "libc", 2413 | "rand_chacha 0.2.2", 2414 | "rand_core 0.5.1", 2415 | "rand_hc", 2416 | "rand_pcg", 2417 | ] 2418 | 2419 | [[package]] 2420 | name = "rand" 2421 | version = "0.8.5" 2422 | source = "registry+https://github.com/rust-lang/crates.io-index" 2423 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 2424 | dependencies = [ 2425 | "libc", 2426 | "rand_chacha 0.3.1", 2427 | "rand_core 0.6.4", 2428 | ] 2429 | 2430 | [[package]] 2431 | name = "rand_chacha" 2432 | version = "0.2.2" 2433 | source = "registry+https://github.com/rust-lang/crates.io-index" 2434 | checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 2435 | dependencies = [ 2436 | "ppv-lite86", 2437 | "rand_core 0.5.1", 2438 | ] 2439 | 2440 | [[package]] 2441 | name = "rand_chacha" 2442 | version = "0.3.1" 2443 | source = "registry+https://github.com/rust-lang/crates.io-index" 2444 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 2445 | dependencies = [ 2446 | "ppv-lite86", 2447 | "rand_core 0.6.4", 2448 | ] 2449 | 2450 | [[package]] 2451 | name = "rand_core" 2452 | version = "0.5.1" 2453 | source = "registry+https://github.com/rust-lang/crates.io-index" 2454 | checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 2455 | dependencies = [ 2456 | "getrandom 0.1.16", 2457 | ] 2458 | 2459 | [[package]] 2460 | name = "rand_core" 2461 | version = "0.6.4" 2462 | source = "registry+https://github.com/rust-lang/crates.io-index" 2463 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 2464 | dependencies = [ 2465 | "getrandom 0.2.14", 2466 | ] 2467 | 2468 | [[package]] 2469 | name = "rand_hc" 2470 | version = "0.2.0" 2471 | source = "registry+https://github.com/rust-lang/crates.io-index" 2472 | checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 2473 | dependencies = [ 2474 | "rand_core 0.5.1", 2475 | ] 2476 | 2477 | [[package]] 2478 | name = "rand_pcg" 2479 | version = "0.2.1" 2480 | source = "registry+https://github.com/rust-lang/crates.io-index" 2481 | checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" 2482 | dependencies = [ 2483 | "rand_core 0.5.1", 2484 | ] 2485 | 2486 | [[package]] 2487 | name = "raw-window-handle" 2488 | version = "0.5.2" 2489 | source = "registry+https://github.com/rust-lang/crates.io-index" 2490 | checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" 2491 | 2492 | [[package]] 2493 | name = "redox_syscall" 2494 | version = "0.4.1" 2495 | source = "registry+https://github.com/rust-lang/crates.io-index" 2496 | checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" 2497 | dependencies = [ 2498 | "bitflags 1.3.2", 2499 | ] 2500 | 2501 | [[package]] 2502 | name = "redox_syscall" 2503 | version = "0.5.1" 2504 | source = "registry+https://github.com/rust-lang/crates.io-index" 2505 | checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" 2506 | dependencies = [ 2507 | "bitflags 2.5.0", 2508 | ] 2509 | 2510 | [[package]] 2511 | name = "redox_users" 2512 | version = "0.4.5" 2513 | source = "registry+https://github.com/rust-lang/crates.io-index" 2514 | checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" 2515 | dependencies = [ 2516 | "getrandom 0.2.14", 2517 | "libredox", 2518 | "thiserror", 2519 | ] 2520 | 2521 | [[package]] 2522 | name = "regex" 2523 | version = "1.10.4" 2524 | source = "registry+https://github.com/rust-lang/crates.io-index" 2525 | checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" 2526 | dependencies = [ 2527 | "aho-corasick", 2528 | "memchr", 2529 | "regex-automata 0.4.6", 2530 | "regex-syntax 0.8.3", 2531 | ] 2532 | 2533 | [[package]] 2534 | name = "regex-automata" 2535 | version = "0.1.10" 2536 | source = "registry+https://github.com/rust-lang/crates.io-index" 2537 | checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" 2538 | dependencies = [ 2539 | "regex-syntax 0.6.29", 2540 | ] 2541 | 2542 | [[package]] 2543 | name = "regex-automata" 2544 | version = "0.4.6" 2545 | source = "registry+https://github.com/rust-lang/crates.io-index" 2546 | checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" 2547 | dependencies = [ 2548 | "aho-corasick", 2549 | "memchr", 2550 | "regex-syntax 0.8.3", 2551 | ] 2552 | 2553 | [[package]] 2554 | name = "regex-syntax" 2555 | version = "0.6.29" 2556 | source = "registry+https://github.com/rust-lang/crates.io-index" 2557 | checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" 2558 | 2559 | [[package]] 2560 | name = "regex-syntax" 2561 | version = "0.8.3" 2562 | source = "registry+https://github.com/rust-lang/crates.io-index" 2563 | checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" 2564 | 2565 | [[package]] 2566 | name = "rend" 2567 | version = "0.4.2" 2568 | source = "registry+https://github.com/rust-lang/crates.io-index" 2569 | checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" 2570 | dependencies = [ 2571 | "bytecheck", 2572 | ] 2573 | 2574 | [[package]] 2575 | name = "rkyv" 2576 | version = "0.7.44" 2577 | source = "registry+https://github.com/rust-lang/crates.io-index" 2578 | checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" 2579 | dependencies = [ 2580 | "bitvec", 2581 | "bytecheck", 2582 | "bytes", 2583 | "hashbrown 0.12.3", 2584 | "ptr_meta", 2585 | "rend", 2586 | "rkyv_derive", 2587 | "seahash", 2588 | "tinyvec", 2589 | "uuid", 2590 | ] 2591 | 2592 | [[package]] 2593 | name = "rkyv_derive" 2594 | version = "0.7.44" 2595 | source = "registry+https://github.com/rust-lang/crates.io-index" 2596 | checksum = "a7dddfff8de25e6f62b9d64e6e432bf1c6736c57d20323e15ee10435fbda7c65" 2597 | dependencies = [ 2598 | "proc-macro2", 2599 | "quote", 2600 | "syn 1.0.109", 2601 | ] 2602 | 2603 | [[package]] 2604 | name = "rust_decimal" 2605 | version = "1.35.0" 2606 | source = "registry+https://github.com/rust-lang/crates.io-index" 2607 | checksum = "1790d1c4c0ca81211399e0e0af16333276f375209e71a37b67698a373db5b47a" 2608 | dependencies = [ 2609 | "arrayvec", 2610 | "borsh", 2611 | "bytes", 2612 | "num-traits", 2613 | "rand 0.8.5", 2614 | "rkyv", 2615 | "serde", 2616 | "serde_json", 2617 | ] 2618 | 2619 | [[package]] 2620 | name = "rustc-demangle" 2621 | version = "0.1.23" 2622 | source = "registry+https://github.com/rust-lang/crates.io-index" 2623 | checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" 2624 | 2625 | [[package]] 2626 | name = "rustc_version" 2627 | version = "0.4.0" 2628 | source = "registry+https://github.com/rust-lang/crates.io-index" 2629 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 2630 | dependencies = [ 2631 | "semver", 2632 | ] 2633 | 2634 | [[package]] 2635 | name = "rustix" 2636 | version = "0.38.34" 2637 | source = "registry+https://github.com/rust-lang/crates.io-index" 2638 | checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" 2639 | dependencies = [ 2640 | "bitflags 2.5.0", 2641 | "errno", 2642 | "libc", 2643 | "linux-raw-sys", 2644 | "windows-sys 0.52.0", 2645 | ] 2646 | 2647 | [[package]] 2648 | name = "rustversion" 2649 | version = "1.0.15" 2650 | source = "registry+https://github.com/rust-lang/crates.io-index" 2651 | checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" 2652 | 2653 | [[package]] 2654 | name = "ryu" 2655 | version = "1.0.17" 2656 | source = "registry+https://github.com/rust-lang/crates.io-index" 2657 | checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" 2658 | 2659 | [[package]] 2660 | name = "same-file" 2661 | version = "1.0.6" 2662 | source = "registry+https://github.com/rust-lang/crates.io-index" 2663 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 2664 | dependencies = [ 2665 | "winapi-util", 2666 | ] 2667 | 2668 | [[package]] 2669 | name = "scoped-tls" 2670 | version = "1.0.1" 2671 | source = "registry+https://github.com/rust-lang/crates.io-index" 2672 | checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 2673 | 2674 | [[package]] 2675 | name = "scopeguard" 2676 | version = "1.2.0" 2677 | source = "registry+https://github.com/rust-lang/crates.io-index" 2678 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 2679 | 2680 | [[package]] 2681 | name = "seahash" 2682 | version = "4.1.0" 2683 | source = "registry+https://github.com/rust-lang/crates.io-index" 2684 | checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" 2685 | 2686 | [[package]] 2687 | name = "selectors" 2688 | version = "0.22.0" 2689 | source = "registry+https://github.com/rust-lang/crates.io-index" 2690 | checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" 2691 | dependencies = [ 2692 | "bitflags 1.3.2", 2693 | "cssparser", 2694 | "derive_more", 2695 | "fxhash", 2696 | "log", 2697 | "matches", 2698 | "phf 0.8.0", 2699 | "phf_codegen 0.8.0", 2700 | "precomputed-hash", 2701 | "servo_arc", 2702 | "smallvec", 2703 | "thin-slice", 2704 | ] 2705 | 2706 | [[package]] 2707 | name = "semver" 2708 | version = "1.0.22" 2709 | source = "registry+https://github.com/rust-lang/crates.io-index" 2710 | checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" 2711 | dependencies = [ 2712 | "serde", 2713 | ] 2714 | 2715 | [[package]] 2716 | name = "serde" 2717 | version = "1.0.203" 2718 | source = "registry+https://github.com/rust-lang/crates.io-index" 2719 | checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" 2720 | dependencies = [ 2721 | "serde_derive", 2722 | ] 2723 | 2724 | [[package]] 2725 | name = "serde_derive" 2726 | version = "1.0.203" 2727 | source = "registry+https://github.com/rust-lang/crates.io-index" 2728 | checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" 2729 | dependencies = [ 2730 | "proc-macro2", 2731 | "quote", 2732 | "syn 2.0.60", 2733 | ] 2734 | 2735 | [[package]] 2736 | name = "serde_json" 2737 | version = "1.0.119" 2738 | source = "registry+https://github.com/rust-lang/crates.io-index" 2739 | checksum = "e8eddb61f0697cc3989c5d64b452f5488e2b8a60fd7d5076a3045076ffef8cb0" 2740 | dependencies = [ 2741 | "indexmap 2.2.6", 2742 | "itoa 1.0.11", 2743 | "ryu", 2744 | "serde", 2745 | ] 2746 | 2747 | [[package]] 2748 | name = "serde_repr" 2749 | version = "0.1.19" 2750 | source = "registry+https://github.com/rust-lang/crates.io-index" 2751 | checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" 2752 | dependencies = [ 2753 | "proc-macro2", 2754 | "quote", 2755 | "syn 2.0.60", 2756 | ] 2757 | 2758 | [[package]] 2759 | name = "serde_spanned" 2760 | version = "0.6.5" 2761 | source = "registry+https://github.com/rust-lang/crates.io-index" 2762 | checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" 2763 | dependencies = [ 2764 | "serde", 2765 | ] 2766 | 2767 | [[package]] 2768 | name = "serde_with" 2769 | version = "3.8.1" 2770 | source = "registry+https://github.com/rust-lang/crates.io-index" 2771 | checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" 2772 | dependencies = [ 2773 | "base64 0.22.0", 2774 | "chrono", 2775 | "hex", 2776 | "indexmap 1.9.3", 2777 | "indexmap 2.2.6", 2778 | "serde", 2779 | "serde_derive", 2780 | "serde_json", 2781 | "serde_with_macros", 2782 | "time", 2783 | ] 2784 | 2785 | [[package]] 2786 | name = "serde_with_macros" 2787 | version = "3.8.1" 2788 | source = "registry+https://github.com/rust-lang/crates.io-index" 2789 | checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" 2790 | dependencies = [ 2791 | "darling", 2792 | "proc-macro2", 2793 | "quote", 2794 | "syn 2.0.60", 2795 | ] 2796 | 2797 | [[package]] 2798 | name = "serialize-to-javascript" 2799 | version = "0.1.1" 2800 | source = "registry+https://github.com/rust-lang/crates.io-index" 2801 | checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" 2802 | dependencies = [ 2803 | "serde", 2804 | "serde_json", 2805 | "serialize-to-javascript-impl", 2806 | ] 2807 | 2808 | [[package]] 2809 | name = "serialize-to-javascript-impl" 2810 | version = "0.1.1" 2811 | source = "registry+https://github.com/rust-lang/crates.io-index" 2812 | checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" 2813 | dependencies = [ 2814 | "proc-macro2", 2815 | "quote", 2816 | "syn 1.0.109", 2817 | ] 2818 | 2819 | [[package]] 2820 | name = "servo_arc" 2821 | version = "0.1.1" 2822 | source = "registry+https://github.com/rust-lang/crates.io-index" 2823 | checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" 2824 | dependencies = [ 2825 | "nodrop", 2826 | "stable_deref_trait", 2827 | ] 2828 | 2829 | [[package]] 2830 | name = "sha2" 2831 | version = "0.10.8" 2832 | source = "registry+https://github.com/rust-lang/crates.io-index" 2833 | checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" 2834 | dependencies = [ 2835 | "cfg-if", 2836 | "cpufeatures", 2837 | "digest", 2838 | ] 2839 | 2840 | [[package]] 2841 | name = "sharded-slab" 2842 | version = "0.1.7" 2843 | source = "registry+https://github.com/rust-lang/crates.io-index" 2844 | checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 2845 | dependencies = [ 2846 | "lazy_static", 2847 | ] 2848 | 2849 | [[package]] 2850 | name = "simd-adler32" 2851 | version = "0.3.7" 2852 | source = "registry+https://github.com/rust-lang/crates.io-index" 2853 | checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" 2854 | 2855 | [[package]] 2856 | name = "simdutf8" 2857 | version = "0.1.4" 2858 | source = "registry+https://github.com/rust-lang/crates.io-index" 2859 | checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" 2860 | 2861 | [[package]] 2862 | name = "siphasher" 2863 | version = "0.3.11" 2864 | source = "registry+https://github.com/rust-lang/crates.io-index" 2865 | checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" 2866 | 2867 | [[package]] 2868 | name = "slab" 2869 | version = "0.4.9" 2870 | source = "registry+https://github.com/rust-lang/crates.io-index" 2871 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 2872 | dependencies = [ 2873 | "autocfg", 2874 | ] 2875 | 2876 | [[package]] 2877 | name = "smallvec" 2878 | version = "1.13.2" 2879 | source = "registry+https://github.com/rust-lang/crates.io-index" 2880 | checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" 2881 | 2882 | [[package]] 2883 | name = "soup2" 2884 | version = "0.2.1" 2885 | source = "registry+https://github.com/rust-lang/crates.io-index" 2886 | checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" 2887 | dependencies = [ 2888 | "bitflags 1.3.2", 2889 | "gio", 2890 | "glib", 2891 | "libc", 2892 | "once_cell", 2893 | "soup2-sys", 2894 | ] 2895 | 2896 | [[package]] 2897 | name = "soup2-sys" 2898 | version = "0.2.0" 2899 | source = "registry+https://github.com/rust-lang/crates.io-index" 2900 | checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" 2901 | dependencies = [ 2902 | "bitflags 1.3.2", 2903 | "gio-sys", 2904 | "glib-sys", 2905 | "gobject-sys", 2906 | "libc", 2907 | "system-deps 5.0.0", 2908 | ] 2909 | 2910 | [[package]] 2911 | name = "stable_deref_trait" 2912 | version = "1.2.0" 2913 | source = "registry+https://github.com/rust-lang/crates.io-index" 2914 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 2915 | 2916 | [[package]] 2917 | name = "state" 2918 | version = "0.5.3" 2919 | source = "registry+https://github.com/rust-lang/crates.io-index" 2920 | checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" 2921 | dependencies = [ 2922 | "loom", 2923 | ] 2924 | 2925 | [[package]] 2926 | name = "string_cache" 2927 | version = "0.8.7" 2928 | source = "registry+https://github.com/rust-lang/crates.io-index" 2929 | checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" 2930 | dependencies = [ 2931 | "new_debug_unreachable", 2932 | "once_cell", 2933 | "parking_lot", 2934 | "phf_shared 0.10.0", 2935 | "precomputed-hash", 2936 | "serde", 2937 | ] 2938 | 2939 | [[package]] 2940 | name = "string_cache_codegen" 2941 | version = "0.5.2" 2942 | source = "registry+https://github.com/rust-lang/crates.io-index" 2943 | checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" 2944 | dependencies = [ 2945 | "phf_generator 0.10.0", 2946 | "phf_shared 0.10.0", 2947 | "proc-macro2", 2948 | "quote", 2949 | ] 2950 | 2951 | [[package]] 2952 | name = "strsim" 2953 | version = "0.10.0" 2954 | source = "registry+https://github.com/rust-lang/crates.io-index" 2955 | checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" 2956 | 2957 | [[package]] 2958 | name = "syn" 2959 | version = "1.0.109" 2960 | source = "registry+https://github.com/rust-lang/crates.io-index" 2961 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 2962 | dependencies = [ 2963 | "proc-macro2", 2964 | "quote", 2965 | "unicode-ident", 2966 | ] 2967 | 2968 | [[package]] 2969 | name = "syn" 2970 | version = "2.0.60" 2971 | source = "registry+https://github.com/rust-lang/crates.io-index" 2972 | checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" 2973 | dependencies = [ 2974 | "proc-macro2", 2975 | "quote", 2976 | "unicode-ident", 2977 | ] 2978 | 2979 | [[package]] 2980 | name = "syn_derive" 2981 | version = "0.1.8" 2982 | source = "registry+https://github.com/rust-lang/crates.io-index" 2983 | checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" 2984 | dependencies = [ 2985 | "proc-macro-error", 2986 | "proc-macro2", 2987 | "quote", 2988 | "syn 2.0.60", 2989 | ] 2990 | 2991 | [[package]] 2992 | name = "system-deps" 2993 | version = "5.0.0" 2994 | source = "registry+https://github.com/rust-lang/crates.io-index" 2995 | checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" 2996 | dependencies = [ 2997 | "cfg-expr 0.9.1", 2998 | "heck 0.3.3", 2999 | "pkg-config", 3000 | "toml 0.5.11", 3001 | "version-compare 0.0.11", 3002 | ] 3003 | 3004 | [[package]] 3005 | name = "system-deps" 3006 | version = "6.2.2" 3007 | source = "registry+https://github.com/rust-lang/crates.io-index" 3008 | checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" 3009 | dependencies = [ 3010 | "cfg-expr 0.15.8", 3011 | "heck 0.5.0", 3012 | "pkg-config", 3013 | "toml 0.8.12", 3014 | "version-compare 0.2.0", 3015 | ] 3016 | 3017 | [[package]] 3018 | name = "tao" 3019 | version = "0.16.9" 3020 | source = "registry+https://github.com/rust-lang/crates.io-index" 3021 | checksum = "575c856fc21e551074869dcfaad8f706412bd5b803dfa0fbf6881c4ff4bfafab" 3022 | dependencies = [ 3023 | "bitflags 1.3.2", 3024 | "cairo-rs", 3025 | "cc", 3026 | "cocoa 0.24.1", 3027 | "core-foundation", 3028 | "core-graphics 0.22.3", 3029 | "crossbeam-channel", 3030 | "dirs-next", 3031 | "dispatch", 3032 | "gdk", 3033 | "gdk-pixbuf", 3034 | "gdk-sys", 3035 | "gdkwayland-sys", 3036 | "gdkx11-sys", 3037 | "gio", 3038 | "glib", 3039 | "glib-sys", 3040 | "gtk", 3041 | "image", 3042 | "instant", 3043 | "jni", 3044 | "lazy_static", 3045 | "libappindicator", 3046 | "libc", 3047 | "log", 3048 | "ndk", 3049 | "ndk-context", 3050 | "ndk-sys", 3051 | "objc", 3052 | "once_cell", 3053 | "parking_lot", 3054 | "png", 3055 | "raw-window-handle", 3056 | "scopeguard", 3057 | "serde", 3058 | "tao-macros", 3059 | "unicode-segmentation", 3060 | "uuid", 3061 | "windows 0.39.0", 3062 | "windows-implement", 3063 | "x11-dl", 3064 | ] 3065 | 3066 | [[package]] 3067 | name = "tao-macros" 3068 | version = "0.1.2" 3069 | source = "registry+https://github.com/rust-lang/crates.io-index" 3070 | checksum = "ec114582505d158b669b136e6851f85840c109819d77c42bb7c0709f727d18c2" 3071 | dependencies = [ 3072 | "proc-macro2", 3073 | "quote", 3074 | "syn 1.0.109", 3075 | ] 3076 | 3077 | [[package]] 3078 | name = "tap" 3079 | version = "1.0.1" 3080 | source = "registry+https://github.com/rust-lang/crates.io-index" 3081 | checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" 3082 | 3083 | [[package]] 3084 | name = "tar" 3085 | version = "0.4.40" 3086 | source = "registry+https://github.com/rust-lang/crates.io-index" 3087 | checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" 3088 | dependencies = [ 3089 | "filetime", 3090 | "libc", 3091 | "xattr", 3092 | ] 3093 | 3094 | [[package]] 3095 | name = "target-lexicon" 3096 | version = "0.12.14" 3097 | source = "registry+https://github.com/rust-lang/crates.io-index" 3098 | checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" 3099 | 3100 | [[package]] 3101 | name = "tauri" 3102 | version = "1.6.8" 3103 | source = "registry+https://github.com/rust-lang/crates.io-index" 3104 | checksum = "77567d2b3b74de4588d544147142d02297f3eaa171a25a065252141d8597a516" 3105 | dependencies = [ 3106 | "anyhow", 3107 | "cocoa 0.24.1", 3108 | "dirs-next", 3109 | "dunce", 3110 | "embed_plist", 3111 | "encoding_rs", 3112 | "flate2", 3113 | "futures-util", 3114 | "getrandom 0.2.14", 3115 | "glib", 3116 | "glob", 3117 | "gtk", 3118 | "heck 0.5.0", 3119 | "http", 3120 | "ignore", 3121 | "objc", 3122 | "once_cell", 3123 | "open", 3124 | "percent-encoding", 3125 | "rand 0.8.5", 3126 | "raw-window-handle", 3127 | "regex", 3128 | "semver", 3129 | "serde", 3130 | "serde_json", 3131 | "serde_repr", 3132 | "serialize-to-javascript", 3133 | "state", 3134 | "tar", 3135 | "tauri-macros", 3136 | "tauri-runtime", 3137 | "tauri-runtime-wry", 3138 | "tauri-utils", 3139 | "tempfile", 3140 | "thiserror", 3141 | "tokio", 3142 | "url", 3143 | "uuid", 3144 | "webkit2gtk", 3145 | "webview2-com", 3146 | "windows 0.39.0", 3147 | ] 3148 | 3149 | [[package]] 3150 | name = "tauri-build" 3151 | version = "1.5.2" 3152 | source = "registry+https://github.com/rust-lang/crates.io-index" 3153 | checksum = "ab30cba12974d0f9b09794f61e72cad6da2142d3ceb81e519321bab86ce53312" 3154 | dependencies = [ 3155 | "anyhow", 3156 | "cargo_toml", 3157 | "dirs-next", 3158 | "heck 0.5.0", 3159 | "json-patch", 3160 | "semver", 3161 | "serde", 3162 | "serde_json", 3163 | "tauri-utils", 3164 | "tauri-winres", 3165 | "walkdir", 3166 | ] 3167 | 3168 | [[package]] 3169 | name = "tauri-codegen" 3170 | version = "1.4.3" 3171 | source = "registry+https://github.com/rust-lang/crates.io-index" 3172 | checksum = "c3a1d90db526a8cdfd54444ad3f34d8d4d58fa5c536463915942393743bd06f8" 3173 | dependencies = [ 3174 | "base64 0.21.7", 3175 | "brotli", 3176 | "ico", 3177 | "json-patch", 3178 | "plist", 3179 | "png", 3180 | "proc-macro2", 3181 | "quote", 3182 | "regex", 3183 | "semver", 3184 | "serde", 3185 | "serde_json", 3186 | "sha2", 3187 | "tauri-utils", 3188 | "thiserror", 3189 | "time", 3190 | "uuid", 3191 | "walkdir", 3192 | ] 3193 | 3194 | [[package]] 3195 | name = "tauri-macros" 3196 | version = "1.4.4" 3197 | source = "registry+https://github.com/rust-lang/crates.io-index" 3198 | checksum = "6a582d75414250122e4a597b9dd7d3c910a2c77906648fc2ac9353845ff0feec" 3199 | dependencies = [ 3200 | "heck 0.5.0", 3201 | "proc-macro2", 3202 | "quote", 3203 | "syn 1.0.109", 3204 | "tauri-codegen", 3205 | "tauri-utils", 3206 | ] 3207 | 3208 | [[package]] 3209 | name = "tauri-plugin-autostart" 3210 | version = "0.0.0" 3211 | source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v1#9fa0be8b42df7b2fd89e504b38f2da2bf31008ca" 3212 | dependencies = [ 3213 | "auto-launch", 3214 | "log", 3215 | "serde", 3216 | "serde_json", 3217 | "tauri", 3218 | "thiserror", 3219 | ] 3220 | 3221 | [[package]] 3222 | name = "tauri-plugin-log" 3223 | version = "0.0.0" 3224 | source = "git+https://github.com/tauri-apps/plugins-workspace?branch=v1#9fa0be8b42df7b2fd89e504b38f2da2bf31008ca" 3225 | dependencies = [ 3226 | "byte-unit", 3227 | "fern", 3228 | "log", 3229 | "serde", 3230 | "serde_json", 3231 | "serde_repr", 3232 | "tauri", 3233 | "time", 3234 | ] 3235 | 3236 | [[package]] 3237 | name = "tauri-runtime" 3238 | version = "0.14.3" 3239 | source = "registry+https://github.com/rust-lang/crates.io-index" 3240 | checksum = "cd7ffddf36d450791018e63a3ddf54979b9581d9644c584a5fb5611e6b5f20b4" 3241 | dependencies = [ 3242 | "gtk", 3243 | "http", 3244 | "http-range", 3245 | "rand 0.8.5", 3246 | "raw-window-handle", 3247 | "serde", 3248 | "serde_json", 3249 | "tauri-utils", 3250 | "thiserror", 3251 | "url", 3252 | "uuid", 3253 | "webview2-com", 3254 | "windows 0.39.0", 3255 | ] 3256 | 3257 | [[package]] 3258 | name = "tauri-runtime-wry" 3259 | version = "0.14.8" 3260 | source = "registry+https://github.com/rust-lang/crates.io-index" 3261 | checksum = "1989b3b4d611f5428b3414a4abae6fa6df30c7eb8ed33250ca90a5f7e5bb3655" 3262 | dependencies = [ 3263 | "cocoa 0.24.1", 3264 | "gtk", 3265 | "percent-encoding", 3266 | "rand 0.8.5", 3267 | "raw-window-handle", 3268 | "tauri-runtime", 3269 | "tauri-utils", 3270 | "uuid", 3271 | "webkit2gtk", 3272 | "webview2-com", 3273 | "windows 0.39.0", 3274 | "wry", 3275 | ] 3276 | 3277 | [[package]] 3278 | name = "tauri-utils" 3279 | version = "1.5.4" 3280 | source = "registry+https://github.com/rust-lang/crates.io-index" 3281 | checksum = "450b17a7102e5d46d4bdabae0d1590fd27953e704e691fc081f06c06d2253b35" 3282 | dependencies = [ 3283 | "brotli", 3284 | "ctor", 3285 | "dunce", 3286 | "glob", 3287 | "heck 0.5.0", 3288 | "html5ever", 3289 | "infer", 3290 | "json-patch", 3291 | "kuchikiki", 3292 | "log", 3293 | "memchr", 3294 | "phf 0.11.2", 3295 | "proc-macro2", 3296 | "quote", 3297 | "semver", 3298 | "serde", 3299 | "serde_json", 3300 | "serde_with", 3301 | "thiserror", 3302 | "url", 3303 | "walkdir", 3304 | "windows-version", 3305 | ] 3306 | 3307 | [[package]] 3308 | name = "tauri-winres" 3309 | version = "0.1.1" 3310 | source = "registry+https://github.com/rust-lang/crates.io-index" 3311 | checksum = "5993dc129e544393574288923d1ec447c857f3f644187f4fbf7d9a875fbfc4fb" 3312 | dependencies = [ 3313 | "embed-resource", 3314 | "toml 0.7.8", 3315 | ] 3316 | 3317 | [[package]] 3318 | name = "tempfile" 3319 | version = "3.10.1" 3320 | source = "registry+https://github.com/rust-lang/crates.io-index" 3321 | checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" 3322 | dependencies = [ 3323 | "cfg-if", 3324 | "fastrand", 3325 | "rustix", 3326 | "windows-sys 0.52.0", 3327 | ] 3328 | 3329 | [[package]] 3330 | name = "tendril" 3331 | version = "0.4.3" 3332 | source = "registry+https://github.com/rust-lang/crates.io-index" 3333 | checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" 3334 | dependencies = [ 3335 | "futf", 3336 | "mac", 3337 | "utf-8", 3338 | ] 3339 | 3340 | [[package]] 3341 | name = "thin-slice" 3342 | version = "0.1.1" 3343 | source = "registry+https://github.com/rust-lang/crates.io-index" 3344 | checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" 3345 | 3346 | [[package]] 3347 | name = "thiserror" 3348 | version = "1.0.59" 3349 | source = "registry+https://github.com/rust-lang/crates.io-index" 3350 | checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" 3351 | dependencies = [ 3352 | "thiserror-impl", 3353 | ] 3354 | 3355 | [[package]] 3356 | name = "thiserror-impl" 3357 | version = "1.0.59" 3358 | source = "registry+https://github.com/rust-lang/crates.io-index" 3359 | checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" 3360 | dependencies = [ 3361 | "proc-macro2", 3362 | "quote", 3363 | "syn 2.0.60", 3364 | ] 3365 | 3366 | [[package]] 3367 | name = "thread_local" 3368 | version = "1.1.8" 3369 | source = "registry+https://github.com/rust-lang/crates.io-index" 3370 | checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" 3371 | dependencies = [ 3372 | "cfg-if", 3373 | "once_cell", 3374 | ] 3375 | 3376 | [[package]] 3377 | name = "time" 3378 | version = "0.3.36" 3379 | source = "registry+https://github.com/rust-lang/crates.io-index" 3380 | checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" 3381 | dependencies = [ 3382 | "deranged", 3383 | "itoa 1.0.11", 3384 | "libc", 3385 | "num-conv", 3386 | "num_threads", 3387 | "powerfmt", 3388 | "serde", 3389 | "time-core", 3390 | "time-macros", 3391 | ] 3392 | 3393 | [[package]] 3394 | name = "time-core" 3395 | version = "0.1.2" 3396 | source = "registry+https://github.com/rust-lang/crates.io-index" 3397 | checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" 3398 | 3399 | [[package]] 3400 | name = "time-macros" 3401 | version = "0.2.18" 3402 | source = "registry+https://github.com/rust-lang/crates.io-index" 3403 | checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" 3404 | dependencies = [ 3405 | "num-conv", 3406 | "time-core", 3407 | ] 3408 | 3409 | [[package]] 3410 | name = "tinyvec" 3411 | version = "1.6.0" 3412 | source = "registry+https://github.com/rust-lang/crates.io-index" 3413 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 3414 | dependencies = [ 3415 | "tinyvec_macros", 3416 | ] 3417 | 3418 | [[package]] 3419 | name = "tinyvec_macros" 3420 | version = "0.1.1" 3421 | source = "registry+https://github.com/rust-lang/crates.io-index" 3422 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 3423 | 3424 | [[package]] 3425 | name = "tokio" 3426 | version = "1.38.0" 3427 | source = "registry+https://github.com/rust-lang/crates.io-index" 3428 | checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" 3429 | dependencies = [ 3430 | "backtrace", 3431 | "bytes", 3432 | "num_cpus", 3433 | "pin-project-lite", 3434 | ] 3435 | 3436 | [[package]] 3437 | name = "toml" 3438 | version = "0.5.11" 3439 | source = "registry+https://github.com/rust-lang/crates.io-index" 3440 | checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" 3441 | dependencies = [ 3442 | "serde", 3443 | ] 3444 | 3445 | [[package]] 3446 | name = "toml" 3447 | version = "0.7.8" 3448 | source = "registry+https://github.com/rust-lang/crates.io-index" 3449 | checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" 3450 | dependencies = [ 3451 | "serde", 3452 | "serde_spanned", 3453 | "toml_datetime", 3454 | "toml_edit 0.19.15", 3455 | ] 3456 | 3457 | [[package]] 3458 | name = "toml" 3459 | version = "0.8.12" 3460 | source = "registry+https://github.com/rust-lang/crates.io-index" 3461 | checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" 3462 | dependencies = [ 3463 | "serde", 3464 | "serde_spanned", 3465 | "toml_datetime", 3466 | "toml_edit 0.22.12", 3467 | ] 3468 | 3469 | [[package]] 3470 | name = "toml_datetime" 3471 | version = "0.6.5" 3472 | source = "registry+https://github.com/rust-lang/crates.io-index" 3473 | checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" 3474 | dependencies = [ 3475 | "serde", 3476 | ] 3477 | 3478 | [[package]] 3479 | name = "toml_edit" 3480 | version = "0.19.15" 3481 | source = "registry+https://github.com/rust-lang/crates.io-index" 3482 | checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" 3483 | dependencies = [ 3484 | "indexmap 2.2.6", 3485 | "serde", 3486 | "serde_spanned", 3487 | "toml_datetime", 3488 | "winnow 0.5.40", 3489 | ] 3490 | 3491 | [[package]] 3492 | name = "toml_edit" 3493 | version = "0.21.1" 3494 | source = "registry+https://github.com/rust-lang/crates.io-index" 3495 | checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" 3496 | dependencies = [ 3497 | "indexmap 2.2.6", 3498 | "toml_datetime", 3499 | "winnow 0.5.40", 3500 | ] 3501 | 3502 | [[package]] 3503 | name = "toml_edit" 3504 | version = "0.22.12" 3505 | source = "registry+https://github.com/rust-lang/crates.io-index" 3506 | checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" 3507 | dependencies = [ 3508 | "indexmap 2.2.6", 3509 | "serde", 3510 | "serde_spanned", 3511 | "toml_datetime", 3512 | "winnow 0.6.7", 3513 | ] 3514 | 3515 | [[package]] 3516 | name = "tracing" 3517 | version = "0.1.40" 3518 | source = "registry+https://github.com/rust-lang/crates.io-index" 3519 | checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" 3520 | dependencies = [ 3521 | "pin-project-lite", 3522 | "tracing-attributes", 3523 | "tracing-core", 3524 | ] 3525 | 3526 | [[package]] 3527 | name = "tracing-attributes" 3528 | version = "0.1.27" 3529 | source = "registry+https://github.com/rust-lang/crates.io-index" 3530 | checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" 3531 | dependencies = [ 3532 | "proc-macro2", 3533 | "quote", 3534 | "syn 2.0.60", 3535 | ] 3536 | 3537 | [[package]] 3538 | name = "tracing-core" 3539 | version = "0.1.32" 3540 | source = "registry+https://github.com/rust-lang/crates.io-index" 3541 | checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" 3542 | dependencies = [ 3543 | "once_cell", 3544 | "valuable", 3545 | ] 3546 | 3547 | [[package]] 3548 | name = "tracing-log" 3549 | version = "0.2.0" 3550 | source = "registry+https://github.com/rust-lang/crates.io-index" 3551 | checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" 3552 | dependencies = [ 3553 | "log", 3554 | "once_cell", 3555 | "tracing-core", 3556 | ] 3557 | 3558 | [[package]] 3559 | name = "tracing-subscriber" 3560 | version = "0.3.18" 3561 | source = "registry+https://github.com/rust-lang/crates.io-index" 3562 | checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" 3563 | dependencies = [ 3564 | "matchers", 3565 | "nu-ansi-term", 3566 | "once_cell", 3567 | "regex", 3568 | "sharded-slab", 3569 | "smallvec", 3570 | "thread_local", 3571 | "tracing", 3572 | "tracing-core", 3573 | "tracing-log", 3574 | ] 3575 | 3576 | [[package]] 3577 | name = "treediff" 3578 | version = "4.0.3" 3579 | source = "registry+https://github.com/rust-lang/crates.io-index" 3580 | checksum = "4d127780145176e2b5d16611cc25a900150e86e9fd79d3bde6ff3a37359c9cb5" 3581 | dependencies = [ 3582 | "serde_json", 3583 | ] 3584 | 3585 | [[package]] 3586 | name = "typenum" 3587 | version = "1.17.0" 3588 | source = "registry+https://github.com/rust-lang/crates.io-index" 3589 | checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 3590 | 3591 | [[package]] 3592 | name = "unicode-bidi" 3593 | version = "0.3.15" 3594 | source = "registry+https://github.com/rust-lang/crates.io-index" 3595 | checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" 3596 | 3597 | [[package]] 3598 | name = "unicode-ident" 3599 | version = "1.0.12" 3600 | source = "registry+https://github.com/rust-lang/crates.io-index" 3601 | checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 3602 | 3603 | [[package]] 3604 | name = "unicode-normalization" 3605 | version = "0.1.23" 3606 | source = "registry+https://github.com/rust-lang/crates.io-index" 3607 | checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" 3608 | dependencies = [ 3609 | "tinyvec", 3610 | ] 3611 | 3612 | [[package]] 3613 | name = "unicode-segmentation" 3614 | version = "1.11.0" 3615 | source = "registry+https://github.com/rust-lang/crates.io-index" 3616 | checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" 3617 | 3618 | [[package]] 3619 | name = "url" 3620 | version = "2.5.2" 3621 | source = "registry+https://github.com/rust-lang/crates.io-index" 3622 | checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" 3623 | dependencies = [ 3624 | "form_urlencoded", 3625 | "idna", 3626 | "percent-encoding", 3627 | "serde", 3628 | ] 3629 | 3630 | [[package]] 3631 | name = "utf-8" 3632 | version = "0.7.6" 3633 | source = "registry+https://github.com/rust-lang/crates.io-index" 3634 | checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" 3635 | 3636 | [[package]] 3637 | name = "utf8-width" 3638 | version = "0.1.7" 3639 | source = "registry+https://github.com/rust-lang/crates.io-index" 3640 | checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" 3641 | 3642 | [[package]] 3643 | name = "uuid" 3644 | version = "1.8.0" 3645 | source = "registry+https://github.com/rust-lang/crates.io-index" 3646 | checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" 3647 | dependencies = [ 3648 | "getrandom 0.2.14", 3649 | ] 3650 | 3651 | [[package]] 3652 | name = "valuable" 3653 | version = "0.1.0" 3654 | source = "registry+https://github.com/rust-lang/crates.io-index" 3655 | checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" 3656 | 3657 | [[package]] 3658 | name = "value-bag" 3659 | version = "1.8.1" 3660 | source = "registry+https://github.com/rust-lang/crates.io-index" 3661 | checksum = "74797339c3b98616c009c7c3eb53a0ce41e85c8ec66bd3db96ed132d20cfdee8" 3662 | 3663 | [[package]] 3664 | name = "version-compare" 3665 | version = "0.0.11" 3666 | source = "registry+https://github.com/rust-lang/crates.io-index" 3667 | checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" 3668 | 3669 | [[package]] 3670 | name = "version-compare" 3671 | version = "0.2.0" 3672 | source = "registry+https://github.com/rust-lang/crates.io-index" 3673 | checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" 3674 | 3675 | [[package]] 3676 | name = "version_check" 3677 | version = "0.9.4" 3678 | source = "registry+https://github.com/rust-lang/crates.io-index" 3679 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 3680 | 3681 | [[package]] 3682 | name = "vswhom" 3683 | version = "0.1.0" 3684 | source = "registry+https://github.com/rust-lang/crates.io-index" 3685 | checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" 3686 | dependencies = [ 3687 | "libc", 3688 | "vswhom-sys", 3689 | ] 3690 | 3691 | [[package]] 3692 | name = "vswhom-sys" 3693 | version = "0.1.2" 3694 | source = "registry+https://github.com/rust-lang/crates.io-index" 3695 | checksum = "d3b17ae1f6c8a2b28506cd96d412eebf83b4a0ff2cbefeeb952f2f9dfa44ba18" 3696 | dependencies = [ 3697 | "cc", 3698 | "libc", 3699 | ] 3700 | 3701 | [[package]] 3702 | name = "walkdir" 3703 | version = "2.5.0" 3704 | source = "registry+https://github.com/rust-lang/crates.io-index" 3705 | checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 3706 | dependencies = [ 3707 | "same-file", 3708 | "winapi-util", 3709 | ] 3710 | 3711 | [[package]] 3712 | name = "wasi" 3713 | version = "0.9.0+wasi-snapshot-preview1" 3714 | source = "registry+https://github.com/rust-lang/crates.io-index" 3715 | checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 3716 | 3717 | [[package]] 3718 | name = "wasi" 3719 | version = "0.11.0+wasi-snapshot-preview1" 3720 | source = "registry+https://github.com/rust-lang/crates.io-index" 3721 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 3722 | 3723 | [[package]] 3724 | name = "wasm-bindgen" 3725 | version = "0.2.92" 3726 | source = "registry+https://github.com/rust-lang/crates.io-index" 3727 | checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" 3728 | dependencies = [ 3729 | "cfg-if", 3730 | "wasm-bindgen-macro", 3731 | ] 3732 | 3733 | [[package]] 3734 | name = "wasm-bindgen-backend" 3735 | version = "0.2.92" 3736 | source = "registry+https://github.com/rust-lang/crates.io-index" 3737 | checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" 3738 | dependencies = [ 3739 | "bumpalo", 3740 | "log", 3741 | "once_cell", 3742 | "proc-macro2", 3743 | "quote", 3744 | "syn 2.0.60", 3745 | "wasm-bindgen-shared", 3746 | ] 3747 | 3748 | [[package]] 3749 | name = "wasm-bindgen-macro" 3750 | version = "0.2.92" 3751 | source = "registry+https://github.com/rust-lang/crates.io-index" 3752 | checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" 3753 | dependencies = [ 3754 | "quote", 3755 | "wasm-bindgen-macro-support", 3756 | ] 3757 | 3758 | [[package]] 3759 | name = "wasm-bindgen-macro-support" 3760 | version = "0.2.92" 3761 | source = "registry+https://github.com/rust-lang/crates.io-index" 3762 | checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" 3763 | dependencies = [ 3764 | "proc-macro2", 3765 | "quote", 3766 | "syn 2.0.60", 3767 | "wasm-bindgen-backend", 3768 | "wasm-bindgen-shared", 3769 | ] 3770 | 3771 | [[package]] 3772 | name = "wasm-bindgen-shared" 3773 | version = "0.2.92" 3774 | source = "registry+https://github.com/rust-lang/crates.io-index" 3775 | checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" 3776 | 3777 | [[package]] 3778 | name = "webkit2gtk" 3779 | version = "0.18.2" 3780 | source = "registry+https://github.com/rust-lang/crates.io-index" 3781 | checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370" 3782 | dependencies = [ 3783 | "bitflags 1.3.2", 3784 | "cairo-rs", 3785 | "gdk", 3786 | "gdk-sys", 3787 | "gio", 3788 | "gio-sys", 3789 | "glib", 3790 | "glib-sys", 3791 | "gobject-sys", 3792 | "gtk", 3793 | "gtk-sys", 3794 | "javascriptcore-rs", 3795 | "libc", 3796 | "once_cell", 3797 | "soup2", 3798 | "webkit2gtk-sys", 3799 | ] 3800 | 3801 | [[package]] 3802 | name = "webkit2gtk-sys" 3803 | version = "0.18.0" 3804 | source = "registry+https://github.com/rust-lang/crates.io-index" 3805 | checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3" 3806 | dependencies = [ 3807 | "atk-sys", 3808 | "bitflags 1.3.2", 3809 | "cairo-sys-rs", 3810 | "gdk-pixbuf-sys", 3811 | "gdk-sys", 3812 | "gio-sys", 3813 | "glib-sys", 3814 | "gobject-sys", 3815 | "gtk-sys", 3816 | "javascriptcore-rs-sys", 3817 | "libc", 3818 | "pango-sys", 3819 | "pkg-config", 3820 | "soup2-sys", 3821 | "system-deps 6.2.2", 3822 | ] 3823 | 3824 | [[package]] 3825 | name = "webview2-com" 3826 | version = "0.19.1" 3827 | source = "registry+https://github.com/rust-lang/crates.io-index" 3828 | checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178" 3829 | dependencies = [ 3830 | "webview2-com-macros", 3831 | "webview2-com-sys", 3832 | "windows 0.39.0", 3833 | "windows-implement", 3834 | ] 3835 | 3836 | [[package]] 3837 | name = "webview2-com-macros" 3838 | version = "0.6.0" 3839 | source = "registry+https://github.com/rust-lang/crates.io-index" 3840 | checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac" 3841 | dependencies = [ 3842 | "proc-macro2", 3843 | "quote", 3844 | "syn 1.0.109", 3845 | ] 3846 | 3847 | [[package]] 3848 | name = "webview2-com-sys" 3849 | version = "0.19.0" 3850 | source = "registry+https://github.com/rust-lang/crates.io-index" 3851 | checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7" 3852 | dependencies = [ 3853 | "regex", 3854 | "serde", 3855 | "serde_json", 3856 | "thiserror", 3857 | "windows 0.39.0", 3858 | "windows-bindgen", 3859 | "windows-metadata", 3860 | ] 3861 | 3862 | [[package]] 3863 | name = "winapi" 3864 | version = "0.3.9" 3865 | source = "registry+https://github.com/rust-lang/crates.io-index" 3866 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 3867 | dependencies = [ 3868 | "winapi-i686-pc-windows-gnu", 3869 | "winapi-x86_64-pc-windows-gnu", 3870 | ] 3871 | 3872 | [[package]] 3873 | name = "winapi-i686-pc-windows-gnu" 3874 | version = "0.4.0" 3875 | source = "registry+https://github.com/rust-lang/crates.io-index" 3876 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 3877 | 3878 | [[package]] 3879 | name = "winapi-util" 3880 | version = "0.1.8" 3881 | source = "registry+https://github.com/rust-lang/crates.io-index" 3882 | checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" 3883 | dependencies = [ 3884 | "windows-sys 0.52.0", 3885 | ] 3886 | 3887 | [[package]] 3888 | name = "winapi-x86_64-pc-windows-gnu" 3889 | version = "0.4.0" 3890 | source = "registry+https://github.com/rust-lang/crates.io-index" 3891 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 3892 | 3893 | [[package]] 3894 | name = "windows" 3895 | version = "0.39.0" 3896 | source = "registry+https://github.com/rust-lang/crates.io-index" 3897 | checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" 3898 | dependencies = [ 3899 | "windows-implement", 3900 | "windows_aarch64_msvc 0.39.0", 3901 | "windows_i686_gnu 0.39.0", 3902 | "windows_i686_msvc 0.39.0", 3903 | "windows_x86_64_gnu 0.39.0", 3904 | "windows_x86_64_msvc 0.39.0", 3905 | ] 3906 | 3907 | [[package]] 3908 | name = "windows" 3909 | version = "0.48.0" 3910 | source = "registry+https://github.com/rust-lang/crates.io-index" 3911 | checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" 3912 | dependencies = [ 3913 | "windows-targets 0.48.5", 3914 | ] 3915 | 3916 | [[package]] 3917 | name = "windows-bindgen" 3918 | version = "0.39.0" 3919 | source = "registry+https://github.com/rust-lang/crates.io-index" 3920 | checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41" 3921 | dependencies = [ 3922 | "windows-metadata", 3923 | "windows-tokens", 3924 | ] 3925 | 3926 | [[package]] 3927 | name = "windows-core" 3928 | version = "0.52.0" 3929 | source = "registry+https://github.com/rust-lang/crates.io-index" 3930 | checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" 3931 | dependencies = [ 3932 | "windows-targets 0.52.5", 3933 | ] 3934 | 3935 | [[package]] 3936 | name = "windows-implement" 3937 | version = "0.39.0" 3938 | source = "registry+https://github.com/rust-lang/crates.io-index" 3939 | checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7" 3940 | dependencies = [ 3941 | "syn 1.0.109", 3942 | "windows-tokens", 3943 | ] 3944 | 3945 | [[package]] 3946 | name = "windows-metadata" 3947 | version = "0.39.0" 3948 | source = "registry+https://github.com/rust-lang/crates.io-index" 3949 | checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278" 3950 | 3951 | [[package]] 3952 | name = "windows-sys" 3953 | version = "0.42.0" 3954 | source = "registry+https://github.com/rust-lang/crates.io-index" 3955 | checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" 3956 | dependencies = [ 3957 | "windows_aarch64_gnullvm 0.42.2", 3958 | "windows_aarch64_msvc 0.42.2", 3959 | "windows_i686_gnu 0.42.2", 3960 | "windows_i686_msvc 0.42.2", 3961 | "windows_x86_64_gnu 0.42.2", 3962 | "windows_x86_64_gnullvm 0.42.2", 3963 | "windows_x86_64_msvc 0.42.2", 3964 | ] 3965 | 3966 | [[package]] 3967 | name = "windows-sys" 3968 | version = "0.48.0" 3969 | source = "registry+https://github.com/rust-lang/crates.io-index" 3970 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 3971 | dependencies = [ 3972 | "windows-targets 0.48.5", 3973 | ] 3974 | 3975 | [[package]] 3976 | name = "windows-sys" 3977 | version = "0.52.0" 3978 | source = "registry+https://github.com/rust-lang/crates.io-index" 3979 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 3980 | dependencies = [ 3981 | "windows-targets 0.52.5", 3982 | ] 3983 | 3984 | [[package]] 3985 | name = "windows-targets" 3986 | version = "0.48.5" 3987 | source = "registry+https://github.com/rust-lang/crates.io-index" 3988 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 3989 | dependencies = [ 3990 | "windows_aarch64_gnullvm 0.48.5", 3991 | "windows_aarch64_msvc 0.48.5", 3992 | "windows_i686_gnu 0.48.5", 3993 | "windows_i686_msvc 0.48.5", 3994 | "windows_x86_64_gnu 0.48.5", 3995 | "windows_x86_64_gnullvm 0.48.5", 3996 | "windows_x86_64_msvc 0.48.5", 3997 | ] 3998 | 3999 | [[package]] 4000 | name = "windows-targets" 4001 | version = "0.52.5" 4002 | source = "registry+https://github.com/rust-lang/crates.io-index" 4003 | checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" 4004 | dependencies = [ 4005 | "windows_aarch64_gnullvm 0.52.5", 4006 | "windows_aarch64_msvc 0.52.5", 4007 | "windows_i686_gnu 0.52.5", 4008 | "windows_i686_gnullvm", 4009 | "windows_i686_msvc 0.52.5", 4010 | "windows_x86_64_gnu 0.52.5", 4011 | "windows_x86_64_gnullvm 0.52.5", 4012 | "windows_x86_64_msvc 0.52.5", 4013 | ] 4014 | 4015 | [[package]] 4016 | name = "windows-tokens" 4017 | version = "0.39.0" 4018 | source = "registry+https://github.com/rust-lang/crates.io-index" 4019 | checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597" 4020 | 4021 | [[package]] 4022 | name = "windows-version" 4023 | version = "0.1.1" 4024 | source = "registry+https://github.com/rust-lang/crates.io-index" 4025 | checksum = "6998aa457c9ba8ff2fb9f13e9d2a930dabcea28f1d0ab94d687d8b3654844515" 4026 | dependencies = [ 4027 | "windows-targets 0.52.5", 4028 | ] 4029 | 4030 | [[package]] 4031 | name = "windows_aarch64_gnullvm" 4032 | version = "0.42.2" 4033 | source = "registry+https://github.com/rust-lang/crates.io-index" 4034 | checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 4035 | 4036 | [[package]] 4037 | name = "windows_aarch64_gnullvm" 4038 | version = "0.48.5" 4039 | source = "registry+https://github.com/rust-lang/crates.io-index" 4040 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 4041 | 4042 | [[package]] 4043 | name = "windows_aarch64_gnullvm" 4044 | version = "0.52.5" 4045 | source = "registry+https://github.com/rust-lang/crates.io-index" 4046 | checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" 4047 | 4048 | [[package]] 4049 | name = "windows_aarch64_msvc" 4050 | version = "0.39.0" 4051 | source = "registry+https://github.com/rust-lang/crates.io-index" 4052 | checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" 4053 | 4054 | [[package]] 4055 | name = "windows_aarch64_msvc" 4056 | version = "0.42.2" 4057 | source = "registry+https://github.com/rust-lang/crates.io-index" 4058 | checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" 4059 | 4060 | [[package]] 4061 | name = "windows_aarch64_msvc" 4062 | version = "0.48.5" 4063 | source = "registry+https://github.com/rust-lang/crates.io-index" 4064 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 4065 | 4066 | [[package]] 4067 | name = "windows_aarch64_msvc" 4068 | version = "0.52.5" 4069 | source = "registry+https://github.com/rust-lang/crates.io-index" 4070 | checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" 4071 | 4072 | [[package]] 4073 | name = "windows_i686_gnu" 4074 | version = "0.39.0" 4075 | source = "registry+https://github.com/rust-lang/crates.io-index" 4076 | checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" 4077 | 4078 | [[package]] 4079 | name = "windows_i686_gnu" 4080 | version = "0.42.2" 4081 | source = "registry+https://github.com/rust-lang/crates.io-index" 4082 | checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 4083 | 4084 | [[package]] 4085 | name = "windows_i686_gnu" 4086 | version = "0.48.5" 4087 | source = "registry+https://github.com/rust-lang/crates.io-index" 4088 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 4089 | 4090 | [[package]] 4091 | name = "windows_i686_gnu" 4092 | version = "0.52.5" 4093 | source = "registry+https://github.com/rust-lang/crates.io-index" 4094 | checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" 4095 | 4096 | [[package]] 4097 | name = "windows_i686_gnullvm" 4098 | version = "0.52.5" 4099 | source = "registry+https://github.com/rust-lang/crates.io-index" 4100 | checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" 4101 | 4102 | [[package]] 4103 | name = "windows_i686_msvc" 4104 | version = "0.39.0" 4105 | source = "registry+https://github.com/rust-lang/crates.io-index" 4106 | checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" 4107 | 4108 | [[package]] 4109 | name = "windows_i686_msvc" 4110 | version = "0.42.2" 4111 | source = "registry+https://github.com/rust-lang/crates.io-index" 4112 | checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" 4113 | 4114 | [[package]] 4115 | name = "windows_i686_msvc" 4116 | version = "0.48.5" 4117 | source = "registry+https://github.com/rust-lang/crates.io-index" 4118 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 4119 | 4120 | [[package]] 4121 | name = "windows_i686_msvc" 4122 | version = "0.52.5" 4123 | source = "registry+https://github.com/rust-lang/crates.io-index" 4124 | checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" 4125 | 4126 | [[package]] 4127 | name = "windows_x86_64_gnu" 4128 | version = "0.39.0" 4129 | source = "registry+https://github.com/rust-lang/crates.io-index" 4130 | checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" 4131 | 4132 | [[package]] 4133 | name = "windows_x86_64_gnu" 4134 | version = "0.42.2" 4135 | source = "registry+https://github.com/rust-lang/crates.io-index" 4136 | checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" 4137 | 4138 | [[package]] 4139 | name = "windows_x86_64_gnu" 4140 | version = "0.48.5" 4141 | source = "registry+https://github.com/rust-lang/crates.io-index" 4142 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 4143 | 4144 | [[package]] 4145 | name = "windows_x86_64_gnu" 4146 | version = "0.52.5" 4147 | source = "registry+https://github.com/rust-lang/crates.io-index" 4148 | checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" 4149 | 4150 | [[package]] 4151 | name = "windows_x86_64_gnullvm" 4152 | version = "0.42.2" 4153 | source = "registry+https://github.com/rust-lang/crates.io-index" 4154 | checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" 4155 | 4156 | [[package]] 4157 | name = "windows_x86_64_gnullvm" 4158 | version = "0.48.5" 4159 | source = "registry+https://github.com/rust-lang/crates.io-index" 4160 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 4161 | 4162 | [[package]] 4163 | name = "windows_x86_64_gnullvm" 4164 | version = "0.52.5" 4165 | source = "registry+https://github.com/rust-lang/crates.io-index" 4166 | checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" 4167 | 4168 | [[package]] 4169 | name = "windows_x86_64_msvc" 4170 | version = "0.39.0" 4171 | source = "registry+https://github.com/rust-lang/crates.io-index" 4172 | checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" 4173 | 4174 | [[package]] 4175 | name = "windows_x86_64_msvc" 4176 | version = "0.42.2" 4177 | source = "registry+https://github.com/rust-lang/crates.io-index" 4178 | checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" 4179 | 4180 | [[package]] 4181 | name = "windows_x86_64_msvc" 4182 | version = "0.48.5" 4183 | source = "registry+https://github.com/rust-lang/crates.io-index" 4184 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 4185 | 4186 | [[package]] 4187 | name = "windows_x86_64_msvc" 4188 | version = "0.52.5" 4189 | source = "registry+https://github.com/rust-lang/crates.io-index" 4190 | checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" 4191 | 4192 | [[package]] 4193 | name = "winnow" 4194 | version = "0.5.40" 4195 | source = "registry+https://github.com/rust-lang/crates.io-index" 4196 | checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" 4197 | dependencies = [ 4198 | "memchr", 4199 | ] 4200 | 4201 | [[package]] 4202 | name = "winnow" 4203 | version = "0.6.7" 4204 | source = "registry+https://github.com/rust-lang/crates.io-index" 4205 | checksum = "14b9415ee827af173ebb3f15f9083df5a122eb93572ec28741fb153356ea2578" 4206 | dependencies = [ 4207 | "memchr", 4208 | ] 4209 | 4210 | [[package]] 4211 | name = "winreg" 4212 | version = "0.10.1" 4213 | source = "registry+https://github.com/rust-lang/crates.io-index" 4214 | checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" 4215 | dependencies = [ 4216 | "winapi", 4217 | ] 4218 | 4219 | [[package]] 4220 | name = "winreg" 4221 | version = "0.52.0" 4222 | source = "registry+https://github.com/rust-lang/crates.io-index" 4223 | checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" 4224 | dependencies = [ 4225 | "cfg-if", 4226 | "windows-sys 0.48.0", 4227 | ] 4228 | 4229 | [[package]] 4230 | name = "wry" 4231 | version = "0.24.10" 4232 | source = "registry+https://github.com/rust-lang/crates.io-index" 4233 | checksum = "00711278ed357350d44c749c286786ecac644e044e4da410d466212152383b45" 4234 | dependencies = [ 4235 | "base64 0.13.1", 4236 | "block", 4237 | "cocoa 0.24.1", 4238 | "core-graphics 0.22.3", 4239 | "crossbeam-channel", 4240 | "dunce", 4241 | "gdk", 4242 | "gio", 4243 | "glib", 4244 | "gtk", 4245 | "html5ever", 4246 | "http", 4247 | "kuchikiki", 4248 | "libc", 4249 | "log", 4250 | "objc", 4251 | "objc_id", 4252 | "once_cell", 4253 | "serde", 4254 | "serde_json", 4255 | "sha2", 4256 | "soup2", 4257 | "tao", 4258 | "thiserror", 4259 | "url", 4260 | "webkit2gtk", 4261 | "webkit2gtk-sys", 4262 | "webview2-com", 4263 | "windows 0.39.0", 4264 | "windows-implement", 4265 | ] 4266 | 4267 | [[package]] 4268 | name = "wyz" 4269 | version = "0.5.1" 4270 | source = "registry+https://github.com/rust-lang/crates.io-index" 4271 | checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" 4272 | dependencies = [ 4273 | "tap", 4274 | ] 4275 | 4276 | [[package]] 4277 | name = "x11" 4278 | version = "2.21.0" 4279 | source = "registry+https://github.com/rust-lang/crates.io-index" 4280 | checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" 4281 | dependencies = [ 4282 | "libc", 4283 | "pkg-config", 4284 | ] 4285 | 4286 | [[package]] 4287 | name = "x11-dl" 4288 | version = "2.21.0" 4289 | source = "registry+https://github.com/rust-lang/crates.io-index" 4290 | checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" 4291 | dependencies = [ 4292 | "libc", 4293 | "once_cell", 4294 | "pkg-config", 4295 | ] 4296 | 4297 | [[package]] 4298 | name = "xattr" 4299 | version = "1.3.1" 4300 | source = "registry+https://github.com/rust-lang/crates.io-index" 4301 | checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" 4302 | dependencies = [ 4303 | "libc", 4304 | "linux-raw-sys", 4305 | "rustix", 4306 | ] 4307 | -------------------------------------------------------------------------------- /src-tauri/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "home-assistant-assist-desktop" 3 | version = "1.4.0" 4 | description = "A Tauri App" 5 | authors = ["you"] 6 | license = "" 7 | repository = "" 8 | edition = "2021" 9 | 10 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 11 | 12 | [build-dependencies] 13 | tauri-build = { version = "1.5", features = [] } 14 | 15 | [dependencies] 16 | tauri = { version = "1.6", features = [ "global-shortcut-all", "system-tray", "shell-open"] } 17 | tauri-plugin-autostart = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v1" } 18 | tauri-plugin-log = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v1" } 19 | serde = { version = "1.0", features = ["derive"] } 20 | serde_json = "1.0" 21 | dirs = "5.0.1" 22 | global-hotkey = "0.5.4" 23 | log = "^0.4" 24 | tokio = "1.38.0" 25 | url = "2.5.2" 26 | opener = "0.7.1" 27 | 28 | [features] 29 | # this feature is used for production builds or when `devPath` points to the filesystem 30 | # DO NOT REMOVE!! 31 | custom-protocol = ["tauri/custom-protocol"] 32 | -------------------------------------------------------------------------------- /src-tauri/build.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | tauri_build::build() 3 | } 4 | -------------------------------------------------------------------------------- /src-tauri/icons/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timmo001/home-assistant-assist-desktop/82ae0add1f676a612fca9a49f315b140160d6157/src-tauri/icons/128x128.png -------------------------------------------------------------------------------- /src-tauri/icons/128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timmo001/home-assistant-assist-desktop/82ae0add1f676a612fca9a49f315b140160d6157/src-tauri/icons/128x128@2x.png -------------------------------------------------------------------------------- /src-tauri/icons/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timmo001/home-assistant-assist-desktop/82ae0add1f676a612fca9a49f315b140160d6157/src-tauri/icons/32x32.png -------------------------------------------------------------------------------- /src-tauri/icons/Square107x107Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timmo001/home-assistant-assist-desktop/82ae0add1f676a612fca9a49f315b140160d6157/src-tauri/icons/Square107x107Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square142x142Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timmo001/home-assistant-assist-desktop/82ae0add1f676a612fca9a49f315b140160d6157/src-tauri/icons/Square142x142Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square150x150Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timmo001/home-assistant-assist-desktop/82ae0add1f676a612fca9a49f315b140160d6157/src-tauri/icons/Square150x150Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square284x284Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timmo001/home-assistant-assist-desktop/82ae0add1f676a612fca9a49f315b140160d6157/src-tauri/icons/Square284x284Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square30x30Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timmo001/home-assistant-assist-desktop/82ae0add1f676a612fca9a49f315b140160d6157/src-tauri/icons/Square30x30Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square310x310Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timmo001/home-assistant-assist-desktop/82ae0add1f676a612fca9a49f315b140160d6157/src-tauri/icons/Square310x310Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square44x44Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timmo001/home-assistant-assist-desktop/82ae0add1f676a612fca9a49f315b140160d6157/src-tauri/icons/Square44x44Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square71x71Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timmo001/home-assistant-assist-desktop/82ae0add1f676a612fca9a49f315b140160d6157/src-tauri/icons/Square71x71Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square89x89Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timmo001/home-assistant-assist-desktop/82ae0add1f676a612fca9a49f315b140160d6157/src-tauri/icons/Square89x89Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timmo001/home-assistant-assist-desktop/82ae0add1f676a612fca9a49f315b140160d6157/src-tauri/icons/StoreLogo.png -------------------------------------------------------------------------------- /src-tauri/icons/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timmo001/home-assistant-assist-desktop/82ae0add1f676a612fca9a49f315b140160d6157/src-tauri/icons/icon.icns -------------------------------------------------------------------------------- /src-tauri/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timmo001/home-assistant-assist-desktop/82ae0add1f676a612fca9a49f315b140160d6157/src-tauri/icons/icon.ico -------------------------------------------------------------------------------- /src-tauri/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timmo001/home-assistant-assist-desktop/82ae0add1f676a612fca9a49f315b140160d6157/src-tauri/icons/icon.png -------------------------------------------------------------------------------- /src-tauri/icons/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 15 | 17 | 35 | 39 | 40 | -------------------------------------------------------------------------------- /src-tauri/src/main.rs: -------------------------------------------------------------------------------- 1 | // Prevents additional console window on Windows in release, DO NOT REMOVE!! 2 | #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] 3 | 4 | use opener::open_browser; 5 | use serde::{Deserialize, Serialize}; 6 | use std::fs::File; 7 | use tauri::GlobalShortcutManager; 8 | use tauri::Manager; 9 | use tauri::SystemTray; 10 | use tauri::{CustomMenuItem, SystemTrayMenu, SystemTrayMenuItem}; 11 | use tauri_plugin_autostart::MacosLauncher; 12 | use tauri_plugin_log::LogTarget; 13 | use url::Url; 14 | 15 | // Define settings 16 | #[derive(Serialize, Deserialize)] 17 | struct HomeAssistantSettings { 18 | access_token: String, 19 | host: String, 20 | port: u16, 21 | ssl: bool, 22 | } 23 | 24 | #[derive(Serialize, Deserialize)] 25 | struct TraySettings { 26 | double_click_action: String, 27 | } 28 | 29 | #[derive(Serialize, Deserialize)] 30 | struct Settings { 31 | autostart: bool, 32 | home_assistant: HomeAssistantSettings, 33 | tray: Option, 34 | } 35 | 36 | #[derive(Debug, Serialize)] 37 | struct CommandError { 38 | message: String, 39 | } 40 | 41 | impl From for CommandError { 42 | fn from(error: serde_json::Error) -> Self { 43 | CommandError { 44 | message: error.to_string(), 45 | } 46 | } 47 | } 48 | 49 | fn show_window_app(window: tauri::Window) { 50 | log::info!("Showing window..."); 51 | let url = window.url().to_string(); 52 | if url.contains("settings") { 53 | open_app(window); 54 | return; 55 | } 56 | window.show().expect("failed to show the window"); 57 | window.set_focus().expect("failed to focus the window"); 58 | window 59 | .emit("focus", {}) 60 | .expect("failed to emit focus event"); 61 | } 62 | 63 | // Learn more about Tauri commands at https://tauri.app/v1/guides/features/command 64 | #[tauri::command] 65 | fn open_app(window: tauri::Window) { 66 | println!("Opening app..."); 67 | 68 | let current_url: String = window.url().to_string(); 69 | let mut url = Url::parse(¤t_url).expect("failed to parse URL"); 70 | 71 | window.show().expect("failed to show the window"); 72 | window.set_focus().expect("failed to focus the window"); 73 | 74 | url.set_path("/"); 75 | println!("Navigating to {}", url); 76 | 77 | window 78 | .eval(&format!("window.location.href = '{}';", url)) 79 | .unwrap(); 80 | } 81 | 82 | #[tauri::command] 83 | fn open_settings(window: tauri::Window) { 84 | println!("Opening settings..."); 85 | 86 | let current_url: String = window.url().to_string(); 87 | let mut url = Url::parse(¤t_url).expect("failed to parse URL"); 88 | 89 | window.show().expect("failed to show the window"); 90 | window.set_focus().expect("failed to focus the window"); 91 | 92 | url.set_path("/settings"); 93 | println!("Navigating to {}", url); 94 | 95 | window 96 | .eval(&format!("window.location.href = '{}';", url)) 97 | .unwrap(); 98 | } 99 | 100 | #[tauri::command] 101 | fn load_settings(app_handle: tauri::AppHandle) -> Result { 102 | let settings_path: String = app_handle 103 | .path_resolver() 104 | .app_config_dir() 105 | .unwrap() 106 | .join("settings.json") 107 | .to_str() 108 | .unwrap() 109 | .to_string(); 110 | 111 | println!("Loading settings from {}...", settings_path); 112 | 113 | // If the directory doesn't exist, create it. 114 | if !std::path::Path::new(&settings_path) 115 | .parent() 116 | .unwrap() 117 | .exists() 118 | { 119 | std::fs::create_dir_all(std::path::Path::new(&settings_path).parent().unwrap()).unwrap(); 120 | } 121 | 122 | // Convert the settings path to a Path. 123 | let path: &std::path::Path = std::path::Path::new(&settings_path); 124 | 125 | // Check if the file exists. 126 | if !path.exists() { 127 | // Create the file if it doesn't exist. 128 | let file: File = File::create(path).unwrap(); 129 | // Create a new Settings struct. 130 | let settings: Settings = Settings { 131 | autostart: false, 132 | home_assistant: HomeAssistantSettings { 133 | access_token: "".to_string(), 134 | host: "homeassistant.local".to_string(), 135 | port: 8123, 136 | ssl: false, 137 | }, 138 | tray: Some(TraySettings { 139 | double_click_action: "toggle_window".to_string(), 140 | }), 141 | }; 142 | // Serialize the Settings struct into JSON. 143 | serde_json::to_writer_pretty(file, &settings).unwrap(); 144 | } 145 | // Open the file in read-only mode. 146 | let file: File = File::open(path).unwrap(); 147 | // Read the JSON contents of the file as an instance of `Settings`. 148 | let mut settings: Settings = serde_json::from_reader(file)?; 149 | 150 | if settings.tray.is_none() { 151 | settings.tray = Some(TraySettings { 152 | double_click_action: "toggle_window".to_string(), 153 | }); 154 | } 155 | 156 | Ok(settings) 157 | } 158 | 159 | #[tauri::command] 160 | fn update_settings(app_handle: tauri::AppHandle, settings: Settings) -> Result<(), CommandError> { 161 | let settings_path: String = app_handle 162 | .path_resolver() 163 | .app_config_dir() 164 | .unwrap() 165 | .join("settings.json") 166 | .to_str() 167 | .unwrap() 168 | .to_string(); 169 | 170 | println!("Updating settings at {}...", settings_path); 171 | 172 | // Open the file in write-only mode. 173 | let file: File = File::create(settings_path).unwrap(); 174 | // Serialize the Settings struct into JSON. 175 | serde_json::to_writer_pretty(file, &settings).unwrap(); 176 | 177 | Ok(()) 178 | } 179 | 180 | #[tauri::command] 181 | fn toggle_window(window: tauri::Window) { 182 | let window_visible = window 183 | .is_visible() 184 | .expect("failed to check if the window is visible"); 185 | println!("Window visible: {}", window_visible); 186 | if window_visible { 187 | println!("Hiding window..."); 188 | window.hide().expect("failed to hide the window"); 189 | } else { 190 | show_window_app(window.clone()); 191 | } 192 | } 193 | 194 | #[tauri::command] 195 | fn trigger_voice_pipeline(window: tauri::Window) { 196 | if !window 197 | .is_visible() 198 | .expect("failed to check if the window is visible") 199 | { 200 | show_window_app(window.clone()); 201 | } 202 | 203 | log::info!("Triggering voice pipeline..."); 204 | window 205 | .emit("trigger-voice-pipeline", {}) 206 | .expect("failed to emit trigger-voice-pipeline event"); 207 | } 208 | 209 | #[tauri::command] 210 | fn hide_window(window: tauri::Window) { 211 | window.hide().expect("failed to hide the window"); 212 | } 213 | 214 | #[tauri::command] 215 | fn open_logs_directory(app_handle: tauri::AppHandle) { 216 | let path: String = app_handle 217 | .path_resolver() 218 | .app_log_dir() 219 | .unwrap() 220 | .to_str() 221 | .unwrap() 222 | .to_string(); 223 | 224 | println!("Opening logs directory at {}...", path); 225 | 226 | // Open file with default application 227 | opener::open(path).unwrap(); 228 | } 229 | 230 | #[tauri::command] 231 | fn quit_application(window: tauri::Window) { 232 | window.close().expect("failed to close the window"); 233 | std::process::exit(0); 234 | } 235 | 236 | fn main() { 237 | let tray_menu: SystemTrayMenu = SystemTrayMenu::new() 238 | .add_item(CustomMenuItem::new( 239 | "toggle_window".to_string(), 240 | "Show/Hide Window (Ctrl+Alt+A)", 241 | )) 242 | .add_item(CustomMenuItem::new( 243 | "trigger_voice_pipeline".to_string(), 244 | "Trigger Voice Pipeline (Alt+Shift+A)", 245 | )) 246 | .add_native_item(SystemTrayMenuItem::Separator) 247 | .add_item(CustomMenuItem::new("open_settings".to_string(), "Settings")) 248 | .add_item(CustomMenuItem::new( 249 | "open_logs_directory".to_string(), 250 | "Open Logs", 251 | )) 252 | .add_native_item(SystemTrayMenuItem::Separator) 253 | .add_item(CustomMenuItem::new( 254 | "check_for_updates".to_string(), 255 | format!("Check for Updates ({})", env!("CARGO_PKG_VERSION")), 256 | )) 257 | .add_native_item(SystemTrayMenuItem::Separator) 258 | .add_item(CustomMenuItem::new("quit_application".to_string(), "Quit")); 259 | 260 | tauri::Builder::default() 261 | .plugin(tauri_plugin_autostart::init( 262 | MacosLauncher::LaunchAgent, 263 | Some(vec![]), 264 | )) 265 | .plugin( 266 | tauri_plugin_log::Builder::default() 267 | .targets([LogTarget::LogDir, LogTarget::Stdout, LogTarget::Webview]) 268 | .build(), 269 | ) 270 | .on_window_event(|event: tauri::GlobalWindowEvent| match event.event() { 271 | tauri::WindowEvent::CloseRequested { api, .. } => { 272 | event.window().hide().unwrap(); 273 | api.prevent_close(); 274 | } 275 | _ => {} 276 | }) 277 | .system_tray(SystemTray::new().with_menu(tray_menu)) 278 | .on_system_tray_event( 279 | |app: &tauri::AppHandle, event: tauri::SystemTrayEvent| match event { 280 | tauri::SystemTrayEvent::DoubleClick { .. } => { 281 | let settings = load_settings(app.clone()).unwrap(); 282 | 283 | let action = if settings.tray.is_some() { 284 | settings.tray.unwrap().double_click_action 285 | } else { 286 | "toggle_window".to_string() 287 | }; 288 | 289 | let window: tauri::Window = app.get_window("main").unwrap(); 290 | match action.as_str() { 291 | "toggle_window" => { 292 | toggle_window(window); 293 | } 294 | "trigger_voice_pipeline" => { 295 | trigger_voice_pipeline(window); 296 | } 297 | _ => {} 298 | } 299 | } 300 | tauri::SystemTrayEvent::MenuItemClick { id, .. } => { 301 | let window: tauri::Window = app.get_window("main").unwrap(); 302 | match id.as_str() { 303 | "toggle_window" => toggle_window(window), 304 | "trigger_voice_pipeline" => trigger_voice_pipeline(window), 305 | "open_settings" => open_settings(window), 306 | "open_logs_directory" => open_logs_directory(app.clone()), 307 | "check_for_updates" => open_browser( 308 | "https://github.com/timmo001/home-assistant-assist-desktop/releases", 309 | ) 310 | .unwrap(), 311 | "quit_application" => quit_application(window), 312 | _ => {} 313 | } 314 | } 315 | _ => {} 316 | }, 317 | ) 318 | .invoke_handler(tauri::generate_handler![ 319 | open_app, 320 | open_settings, 321 | load_settings, 322 | update_settings, 323 | toggle_window, 324 | trigger_voice_pipeline, 325 | hide_window, 326 | open_logs_directory, 327 | quit_application 328 | ]) 329 | .setup(|app: &mut tauri::App| { 330 | let window = app.get_window("main").unwrap(); 331 | app.global_shortcut_manager() 332 | .register("Ctrl+Alt+A", move || { 333 | toggle_window(window.clone()); 334 | }) 335 | .expect("failed to register Ctrl+Alt+A shortcut"); 336 | 337 | let window = app.get_window("main").unwrap(); 338 | app.global_shortcut_manager() 339 | .register("Alt+Shift+A", move || { 340 | trigger_voice_pipeline(window.clone()); 341 | }) 342 | .expect("failed to register Alt+Shift+A shortcut"); 343 | 344 | Ok(()) 345 | }) 346 | .run(tauri::generate_context!()) 347 | .expect("error while running tauri application"); 348 | } 349 | -------------------------------------------------------------------------------- /src-tauri/tauri.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "beforeDevCommand": "yarn dev", 4 | "beforeBuildCommand": "yarn build", 5 | "devPath": "http://localhost:1420", 6 | "distDir": "../dist" 7 | }, 8 | "package": { 9 | "productName": "Home Assistant Assist", 10 | "version": "1.4.0" 11 | }, 12 | "tauri": { 13 | "allowlist": { 14 | "all": false, 15 | "globalShortcut": { 16 | "all": true 17 | }, 18 | "shell": { 19 | "all": false, 20 | "open": true 21 | } 22 | }, 23 | "bundle": { 24 | "active": true, 25 | "appimage": { 26 | "bundleMediaFramework": true 27 | }, 28 | "category": "Utility", 29 | "targets": "all", 30 | "identifier": "dev.timmo.home-assistant-assist-desktop", 31 | "icon": [ 32 | "icons/32x32.png", 33 | "icons/128x128.png", 34 | "icons/128x128@2x.png", 35 | "icons/icon.icns", 36 | "icons/icon.ico" 37 | ], 38 | "shortDescription": "This is a desktop app for Home Assistant Assist." 39 | }, 40 | "security": { 41 | "csp": null 42 | }, 43 | "systemTray": { 44 | "iconPath": "icons/icon.png", 45 | "iconAsTemplate": true 46 | }, 47 | "windows": [ 48 | { 49 | "title": "Home Assistant Assist", 50 | "width": 620, 51 | "height": 300, 52 | "alwaysOnTop": true, 53 | "center": true, 54 | "decorations": false, 55 | "focus": true, 56 | "fullscreen": false, 57 | "resizable": false, 58 | "transparent": true, 59 | "visible": false 60 | } 61 | ] 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/App.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/lib/audioRecorder.ts: -------------------------------------------------------------------------------- 1 | import { error, info } from "tauri-plugin-log-api"; 2 | 3 | export class AudioRecorder { 4 | private _active = false; 5 | 6 | private _callback: (data: Int16Array) => void; 7 | 8 | private _context: AudioContext | undefined; 9 | 10 | private _stream: MediaStream | undefined; 11 | 12 | private _source: MediaStreamAudioSourceNode | undefined; 13 | 14 | private _recorder: AudioWorkletNode | undefined; 15 | 16 | constructor(callback: (data: Int16Array) => void) { 17 | this._callback = callback; 18 | } 19 | 20 | public get active() { 21 | return this._active; 22 | } 23 | 24 | public get sampleRate() { 25 | return this._context?.sampleRate; 26 | } 27 | 28 | public static get isSupported() { 29 | return ( 30 | window.isSecureContext && 31 | // @ts-ignore-next-line 32 | (window.AudioContext || window.webkitAudioContext) 33 | ); 34 | } 35 | 36 | public async start() { 37 | if (!this._context || !this._stream || !this._source || !this._recorder) { 38 | try { 39 | await this._createContext(); 40 | } catch (err: any) { 41 | error(`Error creating context: ${err}`); 42 | this._active = false; 43 | } 44 | } else { 45 | this._stream.getTracks()[0].enabled = true; 46 | await this._context.resume(); 47 | this._active = true; 48 | } 49 | } 50 | 51 | public async stop() { 52 | this._active = false; 53 | if (this._stream) { 54 | this._stream.getTracks()[0].enabled = false; 55 | } 56 | await this._context?.suspend(); 57 | } 58 | 59 | public close() { 60 | this._active = false; 61 | this._stream?.getTracks()[0].stop(); 62 | if (this._recorder) { 63 | this._recorder.port.onmessage = null; 64 | } 65 | this._source?.disconnect(); 66 | this._context?.close(); 67 | this._stream = undefined; 68 | this._source = undefined; 69 | this._recorder = undefined; 70 | this._context = undefined; 71 | } 72 | 73 | private async _createContext() { 74 | // @ts-ignore-next-line 75 | this._context = new (window.AudioContext || window.webkitAudioContext)(); 76 | info("Created audio context"); 77 | this._stream = await navigator.mediaDevices.getUserMedia({ audio: true }); 78 | info("Created stream"); 79 | 80 | info(`url: ${import.meta.url}`); 81 | await this._context.audioWorklet.addModule( 82 | new URL("./recorder.worklet.js", import.meta.url) 83 | ); 84 | info("Added worklet"); 85 | 86 | this._source = this._context.createMediaStreamSource(this._stream); 87 | info("Created source"); 88 | this._recorder = new AudioWorkletNode(this._context, "recorder.worklet"); 89 | info("Created recorder"); 90 | 91 | this._recorder.port.onmessage = (e) => { 92 | if (!this._active) { 93 | return; 94 | } 95 | this._callback(e.data); 96 | }; 97 | this._active = true; 98 | this._source.connect(this._recorder); 99 | info("Connected source to recorder"); 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /src/lib/homeAssistant.ts: -------------------------------------------------------------------------------- 1 | import { 2 | type HassConfig, 3 | type HassUser, 4 | Auth, 5 | Connection, 6 | createConnection, 7 | createLongLivedTokenAuth, 8 | getUser, 9 | subscribeConfig, 10 | } from "home-assistant-js-websocket"; 11 | import { info, warn } from "tauri-plugin-log-api"; 12 | 13 | import { type HomeAssistantSettings } from "../types/settings"; 14 | import { 15 | type PipelineRun, 16 | type PipelineRunEvent, 17 | type PipelineRunOptions, 18 | type AssistPipeline, 19 | type AssistPipelineMutableParams, 20 | } from "../types/homeAssistantAssist"; 21 | 22 | export function generateHomeAssistantURLFromSettings(settings: HomeAssistantSettings): string { 23 | return `${settings.ssl ? "https" : "http"}://${settings.host}${ 24 | settings.port === 443 ? "" : `:${settings.port}` 25 | }`; 26 | } 27 | 28 | export class HomeAssistant { 29 | public connection: Connection | null = null; 30 | 31 | private auth: Auth | null = null; 32 | private config: HomeAssistantSettings | null = null; 33 | private connectedCallback: (connection: Connection, user: HassUser) => void; 34 | private configCallback: (config: HassConfig) => void; 35 | 36 | constructor( 37 | connectedCallback: (connection: Connection, user: HassUser) => void, 38 | configReceivedCallback: (config: HassConfig) => void, 39 | config?: HomeAssistantSettings, 40 | connection?: Connection 41 | ) { 42 | info("Home Assistant: create new client"); 43 | 44 | this.connectedCallback = connectedCallback; 45 | this.configCallback = configReceivedCallback; 46 | this.config = config || null; 47 | this.connection = connection || null; 48 | } 49 | 50 | public get connected(): boolean { 51 | info(`Home Assistant: connected: ${this.connection !== null}`); 52 | return this.connection !== null; 53 | } 54 | 55 | disconnect(): void { 56 | if (this.connection) { 57 | this.connection.close(); 58 | this.connection = null; 59 | } 60 | } 61 | 62 | async connect(): Promise { 63 | if (this.connection) return; 64 | if (!this.config?.host) throw new Error("Missing Home Assistant host"); 65 | if (!this.config?.access_token) 66 | throw new Error("Missing Home Assistant access token"); 67 | 68 | const url = `${this.config.ssl ? "https" : "http"}://${this.config.host}:${ 69 | this.config.port 70 | }`; 71 | 72 | info(`Home Assistant: ${url}`); 73 | 74 | // Create auth object 75 | info("Home Assistant: createLongLivedTokenAuth"); 76 | this.auth = createLongLivedTokenAuth(url, this.config.access_token); 77 | 78 | // Connect to Home Assistant 79 | info("Home Assistant: createConnection"); 80 | this.connection = await createConnection({ auth: this.auth }); 81 | 82 | this.connection.addEventListener("ready", () => { 83 | info("Home Assistant connection ready"); 84 | }); 85 | 86 | this.connection.addEventListener("disconnected", () => { 87 | info("Disconnected from Home Assistant"); 88 | if (this.connection) this.connection.reconnect(); 89 | }); 90 | 91 | subscribeConfig(this.connection, (config: HassConfig) => { 92 | this.configCallback(config); 93 | }); 94 | 95 | getUser(this.connection).then((user: HassUser) => { 96 | this.connectedCallback(this.connection!, user); 97 | }); 98 | } 99 | 100 | processEvent = ( 101 | run: PipelineRun | undefined, 102 | event: PipelineRunEvent, 103 | options?: PipelineRunOptions 104 | ): PipelineRun | undefined => { 105 | if (event.type === "run-start") { 106 | run = { 107 | init_options: options, 108 | stage: "ready", 109 | run: event.data, 110 | events: [event], 111 | }; 112 | return run; 113 | } 114 | 115 | if (!run) { 116 | warn( 117 | `Received unexpected event before receiving session: ${JSON.stringify( 118 | event 119 | )}` 120 | ); 121 | return undefined; 122 | } 123 | 124 | if (event.type === "wake_word-start") { 125 | run = { 126 | ...run, 127 | stage: "wake_word", 128 | wake_word: { ...event.data, done: false }, 129 | }; 130 | } else if (event.type === "wake_word-end") { 131 | run = { 132 | ...run, 133 | wake_word: { ...run.wake_word!, ...event.data, done: true }, 134 | }; 135 | } else if (event.type === "stt-start") { 136 | run = { 137 | ...run, 138 | stage: "stt", 139 | stt: { ...event.data, done: false }, 140 | }; 141 | } else if (event.type === "stt-end") { 142 | run = { 143 | ...run, 144 | stt: { ...run.stt!, ...event.data, done: true }, 145 | }; 146 | } else if (event.type === "intent-start") { 147 | run = { 148 | ...run, 149 | stage: "intent", 150 | intent: { ...event.data, done: false }, 151 | }; 152 | } else if (event.type === "intent-end") { 153 | run = { 154 | ...run, 155 | intent: { ...run.intent!, ...event.data, done: true }, 156 | }; 157 | } else if (event.type === "tts-start") { 158 | run = { 159 | ...run, 160 | stage: "tts", 161 | tts: { ...event.data, done: false }, 162 | }; 163 | } else if (event.type === "tts-end") { 164 | run = { 165 | ...run, 166 | tts: { ...run.tts!, ...event.data, done: true }, 167 | }; 168 | } else if (event.type === "run-end") { 169 | run = { ...run, stage: "done" }; 170 | } else if (event.type === "error") { 171 | run = { ...run, stage: "error", error: event.data }; 172 | } else { 173 | run = { ...run }; 174 | } 175 | 176 | run.events = [...run.events, event]; 177 | 178 | return run; 179 | }; 180 | 181 | runAssistPipeline = ( 182 | options: PipelineRunOptions, 183 | callback: (event: PipelineRunEvent) => void 184 | ) => 185 | this.connection?.subscribeMessage(callback, { 186 | ...options, 187 | type: "assist_pipeline/run", 188 | }); 189 | 190 | listAssistPipelines = () => 191 | this.connection?.sendMessagePromise<{ 192 | pipelines: AssistPipeline[]; 193 | preferred_pipeline: string | null; 194 | }>({ 195 | type: "assist_pipeline/pipeline/list", 196 | }); 197 | 198 | getAssistPipeline = (pipeline_id?: string) => 199 | this.connection?.sendMessagePromise({ 200 | type: "assist_pipeline/pipeline/get", 201 | pipeline_id, 202 | }); 203 | 204 | createAssistPipeline = (pipeline: AssistPipelineMutableParams) => 205 | this.connection?.sendMessagePromise({ 206 | type: "assist_pipeline/pipeline/create", 207 | ...pipeline, 208 | }); 209 | 210 | updateAssistPipeline = ( 211 | pipeline_id: string, 212 | pipeline: AssistPipelineMutableParams 213 | ) => 214 | this.connection?.sendMessagePromise({ 215 | type: "assist_pipeline/pipeline/update", 216 | pipeline_id, 217 | ...pipeline, 218 | }); 219 | 220 | setAssistPipelinePreferred = (pipeline_id: string) => 221 | this.connection?.sendMessagePromise({ 222 | type: "assist_pipeline/pipeline/set_preferred", 223 | pipeline_id, 224 | }); 225 | 226 | deleteAssistPipeline = (pipelineId: string) => 227 | this.connection?.sendMessagePromise({ 228 | type: "assist_pipeline/pipeline/delete", 229 | pipeline_id: pipelineId, 230 | }); 231 | 232 | fetchAssistPipelineLanguages = () => 233 | this.connection?.sendMessagePromise<{ languages: string[] }>({ 234 | type: "assist_pipeline/language/list", 235 | }); 236 | } 237 | -------------------------------------------------------------------------------- /src/lib/recorder.worklet.js: -------------------------------------------------------------------------------- 1 | class RecorderProcessor extends AudioWorkletProcessor { 2 | process(inputList, _outputList, _parameters) { 3 | if (inputList[0].length < 1) { 4 | return true; 5 | } 6 | 7 | const float32Data = inputList[0][0]; 8 | const int16Data = new Int16Array(float32Data.length); 9 | 10 | for (let i = 0; i < float32Data.length; i++) { 11 | const s = Math.max(-1, Math.min(1, float32Data[i])); 12 | int16Data[i] = s < 0 ? s * 0x8000 : s * 0x7fff; 13 | } 14 | 15 | this.port.postMessage(int16Data); 16 | 17 | return true; 18 | } 19 | } 20 | 21 | registerProcessor("recorder.worklet", RecorderProcessor); 22 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import "./styles.css"; 2 | import App from "./App.svelte"; 3 | 4 | const element = document.getElementById("app"); 5 | 6 | if (!element) { 7 | throw new Error("Could not find element with id 'app'"); 8 | } 9 | 10 | const app = new App({ 11 | target: element, 12 | }); 13 | 14 | export default app; 15 | -------------------------------------------------------------------------------- /src/pages/Home.svelte: -------------------------------------------------------------------------------- 1 | 510 | 511 |
512 |
513 | 521 | 522 | 533 | 534 | 551 |
552 | 553 |
554 | {#each responses as response} 555 |
564 | {response.text} 565 |
566 | {/each} 567 |
568 |
569 | 570 | {#if showPipelineMenu} 571 | 591 | {/if} 592 | 593 | 688 | -------------------------------------------------------------------------------- /src/pages/Settings.svelte: -------------------------------------------------------------------------------- 1 | 96 | 97 |
98 |
99 |

General

100 |
101 | Autostart 102 | 103 |
104 |
105 |
106 |

Home Assistant

107 | 108 | Please enter the HTTPS URL of your Home Assistant instance and a Long-lived 109 | access token. You can create a Long-lived access token in your Home Assistant 110 | profile. 111 | 112 |
113 | Home Assistant URL 114 | 122 |
123 |
124 | Home Assistant Token 125 | 133 |
134 |
135 |
136 |

Tray

137 |
138 | Double Click Action 139 | 143 |
144 |
145 |
146 | 154 | 161 |
162 |
163 | 164 | 203 | -------------------------------------------------------------------------------- /src/styles.css: -------------------------------------------------------------------------------- 1 | ::-webkit-scrollbar { 2 | background: rgba(0, 0, 0, 0); 3 | width: 0.2rem; 4 | } 5 | 6 | ::-webkit-scrollbar-track { 7 | background: rgba(0, 0, 0, 0); 8 | } 9 | 10 | ::-webkit-scrollbar-thumb { 11 | background-color: rgba(48, 48, 48, 0.8); 12 | border-radius: 1.8rem; 13 | border: 0.2rem solid rgba(0, 0, 0, 0); 14 | } 15 | 16 | html { 17 | background-color: rgba(0, 0, 0, 0.6); 18 | border-radius: 1.2rem; 19 | border: none; 20 | text-align: center; 21 | color: rgba(248, 248, 248, 1); 22 | } 23 | 24 | body { 25 | margin: 0; 26 | color: rgba(248, 248, 248, 1); 27 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", 28 | "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", 29 | sans-serif; 30 | overflow: hidden; 31 | } 32 | 33 | main { 34 | display: flex; 35 | flex-direction: column; 36 | align-items: center; 37 | justify-content: start; 38 | height: 100vh; 39 | } 40 | 41 | section { 42 | display: flex; 43 | width: 100%; 44 | flex-direction: column; 45 | align-items: center; 46 | justify-content: flex-start; 47 | padding: 0.4rem; 48 | } 49 | 50 | section > * { 51 | width: calc(100% - 2.8rem); 52 | } 53 | 54 | section > span { 55 | text-align: start; 56 | margin: 0; 57 | padding: 0; 58 | } 59 | 60 | input { 61 | background-color: rgb(0, 0, 0); 62 | color: rgba(248, 248, 248, 1); 63 | border: 1px solid rgba(248, 248, 248, 1); 64 | border-radius: 5px; 65 | padding: 5px; 66 | margin: 5px; 67 | } 68 | 69 | select { 70 | flex: 2; 71 | text-align: start; 72 | outline: none; 73 | border: none; 74 | color: rgba(248, 248, 248, 1); 75 | background-color: rgba(28, 28, 28, 0.9); 76 | font-size: 1.2rem; 77 | min-width: 340px; 78 | } 79 | 80 | hr { 81 | width: 100%; 82 | border: 0.05rem solid rgba(248, 248, 248, 0.2); 83 | margin: 0; 84 | } 85 | 86 | h1 { 87 | margin: 0.8rem 0 0.4rem; 88 | padding: 0; 89 | } 90 | 91 | h2 { 92 | text-align: start; 93 | margin: 0.8rem 0 0.4rem; 94 | padding: 0; 95 | } 96 | 97 | .button-icon { 98 | display: flex; 99 | flex-direction: row; 100 | align-items: center; 101 | justify-content: center; 102 | width: 2.8rem; 103 | height: 2.8rem; 104 | margin: 0; 105 | padding: 0.4rem 0.6rem; 106 | border-radius: 2.2rem; 107 | border: none; 108 | background-color: transparent; 109 | box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.1); 110 | cursor: pointer; 111 | transition: all 0.2s ease-in-out; 112 | } 113 | 114 | .button-icon svg { 115 | width: 1.8rem; 116 | height: 1.8rem; 117 | margin: 0 !important; 118 | fill: rgba(248, 248, 248, 0.6); 119 | } 120 | 121 | .button-icon:active, 122 | .button-icon:hover, 123 | .button-icon-active { 124 | background-color: rgba(82, 82, 82, 0.8); 125 | box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.2); 126 | } 127 | 128 | .button-icon:focus { 129 | outline: none; 130 | } 131 | 132 | .button-icon-disabled { 133 | cursor: default; 134 | box-shadow: none; 135 | } 136 | 137 | .button-icon-disabled svg { 138 | fill: rgba(248, 248, 248, 0.2); 139 | } 140 | 141 | .input-box { 142 | display: flex; 143 | flex-direction: row; 144 | align-items: center; 145 | justify-content: center; 146 | width: calc(100% - 2.8rem); 147 | margin: 0.6rem 0 0; 148 | padding: 0.4rem 0.6rem; 149 | border-radius: 1.2rem; 150 | border: none; 151 | background-color: rgba(28, 28, 28, 0.9); 152 | box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.1); 153 | } 154 | 155 | .input-box svg { 156 | width: 1.8rem; 157 | height: 1.8rem; 158 | margin: 0.6rem 0.2rem 0.6rem 0.4rem; 159 | fill: rgba(248, 248, 248, 0.6); 160 | } 161 | 162 | .input-box span { 163 | flex: 1; 164 | text-align: start; 165 | width: 100%; 166 | padding: 0 0.8rem; 167 | } 168 | 169 | .input-box input { 170 | flex: 2; 171 | text-align: start; 172 | outline: none; 173 | border: none; 174 | background-color: transparent; 175 | font-size: 1.4rem; 176 | } 177 | 178 | .scrollable { 179 | overflow-y: auto; 180 | overflow-x: hidden; 181 | height: 100%; 182 | } 183 | 184 | #app { 185 | height: 100vh; 186 | text-align: center; 187 | } 188 | -------------------------------------------------------------------------------- /src/types/assistResponse.ts: -------------------------------------------------------------------------------- 1 | export enum AssistResponseType { 2 | Assist = "assist", 3 | Error = "error", 4 | User = "user", 5 | } 6 | 7 | export interface AssistResponse { 8 | type: AssistResponseType; 9 | text: string; 10 | } 11 | -------------------------------------------------------------------------------- /src/types/homeAssistantAssist.ts: -------------------------------------------------------------------------------- 1 | // https://github.com/home-assistant/frontend/blob/dev/src/data/conversation.ts 2 | interface IntentTarget { 3 | type: "area" | "device" | "entity" | "domain" | "device_class" | "custom"; 4 | name: string; 5 | id: string | null; 6 | } 7 | 8 | interface IntentResultBase { 9 | language: string; 10 | speech: 11 | | { 12 | [SpeechType in "plain" | "ssml"]: { extra_data: any; speech: string }; 13 | } 14 | | null; 15 | } 16 | 17 | interface IntentResultActionDone extends IntentResultBase { 18 | response_type: "action_done"; 19 | data: { 20 | targets: IntentTarget[]; 21 | success: IntentTarget[]; 22 | failed: IntentTarget[]; 23 | }; 24 | } 25 | 26 | interface IntentResultQueryAnswer extends IntentResultBase { 27 | response_type: "query_answer"; 28 | data: { 29 | targets: IntentTarget[]; 30 | success: IntentTarget[]; 31 | failed: IntentTarget[]; 32 | }; 33 | } 34 | 35 | interface IntentResultError extends IntentResultBase { 36 | response_type: "error"; 37 | data: { 38 | code: 39 | | "no_intent_match" 40 | | "no_valid_targets" 41 | | "failed_to_handle" 42 | | "unknown"; 43 | }; 44 | } 45 | 46 | export interface ConversationResult { 47 | conversation_id: string | null; 48 | response: 49 | | IntentResultActionDone 50 | | IntentResultQueryAnswer 51 | | IntentResultError; 52 | } 53 | 54 | // https://github.com/home-assistant/frontend/blob/dev/src/data/stt.ts 55 | export interface SpeechMetadata { 56 | language: string; 57 | format: "wav" | "ogg"; 58 | codec: "pcm" | "opus"; 59 | bit_rate: 8 | 16 | 24 | 32; 60 | sample_rate: 61 | | 8000 62 | | 11000 63 | | 16000 64 | | 18900 65 | | 22000 66 | | 32000 67 | | 37800 68 | | 44100 69 | | 48000; 70 | channel: 1 | 2; 71 | } 72 | 73 | // https://github.com/home-assistant/frontend/blob/dev/src/data/media_source.ts 74 | export interface ResolvedMediaSource { 75 | url: string; 76 | mime_type: string; 77 | } 78 | 79 | // https://github.com/home-assistant/frontend/blob/dev/src/data/assist_pipeline.ts 80 | export interface AssistPipeline { 81 | id: string; 82 | name: string; 83 | language: string; 84 | conversation_engine: string; 85 | conversation_language: string | null; 86 | stt_engine: string | null; 87 | stt_language: string | null; 88 | tts_engine: string | null; 89 | tts_language: string | null; 90 | tts_voice: string | null; 91 | wake_word_entity: string | null; 92 | wake_word_id: string | null; 93 | } 94 | 95 | export interface AssistPipelineMutableParams { 96 | name: string; 97 | language: string; 98 | conversation_engine: string; 99 | conversation_language: string | null; 100 | stt_engine: string | null; 101 | stt_language: string | null; 102 | tts_engine: string | null; 103 | tts_language: string | null; 104 | tts_voice: string | null; 105 | wake_word_entity: string | null; 106 | wake_word_id: string | null; 107 | } 108 | 109 | export interface assistRunListing { 110 | pipeline_run_id: string; 111 | timestamp: string; 112 | } 113 | 114 | interface PipelineEventBase { 115 | timestamp: string; 116 | } 117 | 118 | interface PipelineRunStartEvent extends PipelineEventBase { 119 | type: "run-start"; 120 | data: { 121 | pipeline: string; 122 | language: string; 123 | runner_data: { 124 | stt_binary_handler_id: number | null; 125 | timeout: number; 126 | }; 127 | }; 128 | } 129 | interface PipelineRunEndEvent extends PipelineEventBase { 130 | type: "run-end"; 131 | data: Record; 132 | } 133 | 134 | interface PipelineErrorEvent extends PipelineEventBase { 135 | type: "error"; 136 | data: { 137 | code: string; 138 | message: string; 139 | }; 140 | } 141 | 142 | interface PipelineWakeWordStartEvent extends PipelineEventBase { 143 | type: "wake_word-start"; 144 | data: { 145 | engine: string; 146 | metadata: SpeechMetadata; 147 | }; 148 | } 149 | 150 | interface PipelineWakeWordEndEvent extends PipelineEventBase { 151 | type: "wake_word-end"; 152 | data: { wake_word_output: { ww_id: string; timestamp: number } }; 153 | } 154 | 155 | interface PipelineSTTStartEvent extends PipelineEventBase { 156 | type: "stt-start"; 157 | data: { 158 | engine: string; 159 | metadata: SpeechMetadata; 160 | }; 161 | } 162 | interface PipelineSTTEndEvent extends PipelineEventBase { 163 | type: "stt-end"; 164 | data: { 165 | stt_output: { text: string }; 166 | }; 167 | } 168 | 169 | interface PipelineIntentStartEvent extends PipelineEventBase { 170 | type: "intent-start"; 171 | data: { 172 | engine: string; 173 | language: string; 174 | intent_input: string; 175 | }; 176 | } 177 | interface PipelineIntentEndEvent extends PipelineEventBase { 178 | type: "intent-end"; 179 | data: { 180 | intent_output: ConversationResult; 181 | }; 182 | } 183 | 184 | interface PipelineTTSStartEvent extends PipelineEventBase { 185 | type: "tts-start"; 186 | data: { 187 | engine: string; 188 | language: string; 189 | voice: string; 190 | tts_input: string; 191 | }; 192 | } 193 | interface PipelineTTSEndEvent extends PipelineEventBase { 194 | type: "tts-end"; 195 | data: { 196 | tts_output: ResolvedMediaSource; 197 | }; 198 | } 199 | 200 | export type PipelineRunEvent = 201 | | PipelineRunStartEvent 202 | | PipelineRunEndEvent 203 | | PipelineErrorEvent 204 | | PipelineWakeWordStartEvent 205 | | PipelineWakeWordEndEvent 206 | | PipelineSTTStartEvent 207 | | PipelineSTTEndEvent 208 | | PipelineIntentStartEvent 209 | | PipelineIntentEndEvent 210 | | PipelineTTSStartEvent 211 | | PipelineTTSEndEvent; 212 | 213 | export type PipelineRunOptions = ( 214 | | { 215 | start_stage: "intent" | "tts"; 216 | input: { text: string }; 217 | } 218 | | { 219 | start_stage: "stt"; 220 | input: { sample_rate: number }; 221 | } 222 | | { 223 | start_stage: "wake_word"; 224 | input: { 225 | sample_rate: number; 226 | timeout?: number; 227 | audio_seconds_to_buffer?: number; 228 | }; 229 | } 230 | ) & { 231 | end_stage: "stt" | "intent" | "tts"; 232 | pipeline?: string; 233 | conversation_id?: string | null; 234 | }; 235 | 236 | export interface PipelineRun { 237 | init_options?: PipelineRunOptions; 238 | events: PipelineRunEvent[]; 239 | stage: "ready" | "wake_word" | "stt" | "intent" | "tts" | "done" | "error"; 240 | run: PipelineRunStartEvent["data"]; 241 | error?: PipelineErrorEvent["data"]; 242 | wake_word?: PipelineWakeWordStartEvent["data"] & 243 | Partial & { done: boolean }; 244 | stt?: PipelineSTTStartEvent["data"] & 245 | Partial & { done: boolean }; 246 | intent?: PipelineIntentStartEvent["data"] & 247 | Partial & { done: boolean }; 248 | tts?: PipelineTTSStartEvent["data"] & 249 | Partial & { done: boolean }; 250 | } 251 | -------------------------------------------------------------------------------- /src/types/settings.ts: -------------------------------------------------------------------------------- 1 | export interface HomeAssistantSettings { 2 | access_token?: string; 3 | host: string; 4 | port: number; 5 | ssl: boolean; 6 | } 7 | 8 | export interface TraySettings { 9 | double_click_action: string; 10 | } 11 | 12 | export interface Settings { 13 | autostart?: boolean; 14 | home_assistant: HomeAssistantSettings; 15 | tray: TraySettings; 16 | } 17 | -------------------------------------------------------------------------------- /src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import { vitePreprocess } from "@sveltejs/vite-plugin-svelte"; 2 | 3 | export default { 4 | // Consult https://svelte.dev/docs#compile-time-svelte-preprocess 5 | // for more information about preprocessors 6 | preprocess: vitePreprocess(), 7 | }; 8 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/svelte/tsconfig.json", 3 | "compilerOptions": { 4 | "target": "ESNext", 5 | "useDefineForClassFields": true, 6 | "module": "ESNext", 7 | "resolveJsonModule": true, 8 | /** 9 | * Typecheck JS in `.svelte` and `.js` files by default. 10 | * Disable checkJs if you'd like to use dynamic types in JS. 11 | * Note that setting allowJs false does not prevent the use 12 | * of JS in `.svelte` files. 13 | */ 14 | "allowJs": true, 15 | "checkJs": true, 16 | "isolatedModules": true 17 | }, 18 | "include": ["src/**/*.d.ts", "src/**/*.ts", "src/**/*.js", "src/**/*.svelte"], 19 | "references": [{ "path": "./tsconfig.node.json" }] 20 | } 21 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "skipLibCheck": true, 5 | "module": "ESNext", 6 | "moduleResolution": "bundler" 7 | }, 8 | "include": ["vite.config.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite"; 2 | import { svelte } from "@sveltejs/vite-plugin-svelte"; 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig(async () => ({ 6 | plugins: [svelte()], 7 | 8 | // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build` 9 | // 10 | // 1. prevent vite from obscuring rust errors 11 | clearScreen: false, 12 | // 2. tauri expects a fixed port, fail if that port is not available 13 | server: { 14 | port: 1420, 15 | strictPort: true, 16 | }, 17 | })); 18 | --------------------------------------------------------------------------------