From 2752ea4e5425ef10d38945cd1cc593d91bb6046c Mon Sep 17 00:00:00 2001 From: freedakgmail Date: Fri, 10 Jul 2026 00:04:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20Tauri=20Mac=20?= =?UTF-8?q?=E5=8E=9F=E7=94=9F=E5=BA=94=E7=94=A8=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 mac-app/ 目录:Tauri 项目结构(Rust 外壳 + sidecar 进程管理) - 前端添加 Tauri 环境检测,API 调用和 WebSocket 自动适配 - 后端支持 MEETING_DATA_DIR 环境变量指定数据目录 - 新增 /api/meetings/{id}/retranscribe 接口用于重新转录 - 修复轮询超时:2分钟→30分钟,适配长音频 - 添加 .gitignore 排除构建产物 --- .gitignore | 10 +- database.py | 11 +- frontend/src/api/meeting.js | 3 +- frontend/src/pages/Upload.jsx | 6 +- frontend/src/store/useAppStore.js | 15 +- mac-app/README.md | 119 + mac-app/package-lock.json | 247 + mac-app/package.json | 13 + mac-app/scripts/build.sh | 48 + mac-app/scripts/build_backend.sh | 56 + mac-app/scripts/build_frontend.sh | 15 + mac-app/src-tauri/Cargo.lock | 4695 +++++++++++++++++ mac-app/src-tauri/Cargo.toml | 20 + mac-app/src-tauri/Info.plist | 10 + mac-app/src-tauri/build.rs | 3 + mac-app/src-tauri/capabilities/default.json | 13 + mac-app/src-tauri/icons/128x128.png | Bin 0 -> 4316 bytes mac-app/src-tauri/icons/128x128@2x.png | Bin 0 -> 8555 bytes mac-app/src-tauri/icons/32x32.png | Bin 0 -> 1047 bytes mac-app/src-tauri/icons/64x64.png | Bin 0 -> 2132 bytes mac-app/src-tauri/icons/README.txt | 11 + mac-app/src-tauri/icons/Square107x107Logo.png | Bin 0 -> 3574 bytes mac-app/src-tauri/icons/Square142x142Logo.png | Bin 0 -> 4747 bytes mac-app/src-tauri/icons/Square150x150Logo.png | Bin 0 -> 5030 bytes mac-app/src-tauri/icons/Square284x284Logo.png | Bin 0 -> 9465 bytes mac-app/src-tauri/icons/Square30x30Logo.png | Bin 0 -> 961 bytes mac-app/src-tauri/icons/Square310x310Logo.png | Bin 0 -> 10351 bytes mac-app/src-tauri/icons/Square44x44Logo.png | Bin 0 -> 1427 bytes mac-app/src-tauri/icons/Square71x71Logo.png | Bin 0 -> 2358 bytes mac-app/src-tauri/icons/Square89x89Logo.png | Bin 0 -> 2947 bytes mac-app/src-tauri/icons/StoreLogo.png | Bin 0 -> 1604 bytes .../android/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../icons/android/mipmap-hdpi/ic_launcher.png | Bin 0 -> 1492 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 5420 bytes .../android/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 1713 bytes .../icons/android/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1503 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 3640 bytes .../android/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 1691 bytes .../android/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 3102 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 7223 bytes .../mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 3532 bytes .../android/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 4738 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 10836 bytes .../mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 5460 bytes .../android/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 6443 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 14503 bytes .../mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 7422 bytes .../android/values/ic_launcher_background.xml | 4 + mac-app/src-tauri/icons/icon.icns | Bin 0 -> 67475 bytes mac-app/src-tauri/icons/icon.ico | Bin 0 -> 15296 bytes mac-app/src-tauri/icons/icon.png | Bin 0 -> 15908 bytes .../src-tauri/icons/ios/AppIcon-20x20@1x.png | Bin 0 -> 640 bytes .../icons/ios/AppIcon-20x20@2x-1.png | Bin 0 -> 1307 bytes .../src-tauri/icons/ios/AppIcon-20x20@2x.png | Bin 0 -> 1307 bytes .../src-tauri/icons/ios/AppIcon-20x20@3x.png | Bin 0 -> 1950 bytes .../src-tauri/icons/ios/AppIcon-29x29@1x.png | Bin 0 -> 947 bytes .../icons/ios/AppIcon-29x29@2x-1.png | Bin 0 -> 1916 bytes .../src-tauri/icons/ios/AppIcon-29x29@2x.png | Bin 0 -> 1916 bytes .../src-tauri/icons/ios/AppIcon-29x29@3x.png | Bin 0 -> 2961 bytes .../src-tauri/icons/ios/AppIcon-40x40@1x.png | Bin 0 -> 1307 bytes .../icons/ios/AppIcon-40x40@2x-1.png | Bin 0 -> 2630 bytes .../src-tauri/icons/ios/AppIcon-40x40@2x.png | Bin 0 -> 2630 bytes .../src-tauri/icons/ios/AppIcon-40x40@3x.png | Bin 0 -> 4001 bytes .../src-tauri/icons/ios/AppIcon-512@2x.png | Bin 0 -> 8009 bytes .../src-tauri/icons/ios/AppIcon-60x60@2x.png | Bin 0 -> 4001 bytes .../src-tauri/icons/ios/AppIcon-60x60@3x.png | Bin 0 -> 6089 bytes .../src-tauri/icons/ios/AppIcon-76x76@1x.png | Bin 0 -> 2477 bytes .../src-tauri/icons/ios/AppIcon-76x76@2x.png | Bin 0 -> 5119 bytes .../icons/ios/AppIcon-83.5x83.5@2x.png | Bin 0 -> 5511 bytes mac-app/src-tauri/src/lib.rs | 89 + mac-app/src-tauri/src/main.rs | 6 + mac-app/src-tauri/tauri.conf.json | 44 + main.py | 39 +- 73 files changed, 5465 insertions(+), 17 deletions(-) create mode 100644 mac-app/README.md create mode 100644 mac-app/package-lock.json create mode 100644 mac-app/package.json create mode 100755 mac-app/scripts/build.sh create mode 100755 mac-app/scripts/build_backend.sh create mode 100755 mac-app/scripts/build_frontend.sh create mode 100644 mac-app/src-tauri/Cargo.lock create mode 100644 mac-app/src-tauri/Cargo.toml create mode 100644 mac-app/src-tauri/Info.plist create mode 100644 mac-app/src-tauri/build.rs create mode 100644 mac-app/src-tauri/capabilities/default.json create mode 100644 mac-app/src-tauri/icons/128x128.png create mode 100644 mac-app/src-tauri/icons/128x128@2x.png create mode 100644 mac-app/src-tauri/icons/32x32.png create mode 100644 mac-app/src-tauri/icons/64x64.png create mode 100644 mac-app/src-tauri/icons/README.txt create mode 100644 mac-app/src-tauri/icons/Square107x107Logo.png create mode 100644 mac-app/src-tauri/icons/Square142x142Logo.png create mode 100644 mac-app/src-tauri/icons/Square150x150Logo.png create mode 100644 mac-app/src-tauri/icons/Square284x284Logo.png create mode 100644 mac-app/src-tauri/icons/Square30x30Logo.png create mode 100644 mac-app/src-tauri/icons/Square310x310Logo.png create mode 100644 mac-app/src-tauri/icons/Square44x44Logo.png create mode 100644 mac-app/src-tauri/icons/Square71x71Logo.png create mode 100644 mac-app/src-tauri/icons/Square89x89Logo.png create mode 100644 mac-app/src-tauri/icons/StoreLogo.png create mode 100644 mac-app/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 mac-app/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png create mode 100644 mac-app/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 mac-app/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png create mode 100644 mac-app/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png create mode 100644 mac-app/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 mac-app/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png create mode 100644 mac-app/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png create mode 100644 mac-app/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 mac-app/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png create mode 100644 mac-app/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png create mode 100644 mac-app/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 mac-app/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 mac-app/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png create mode 100644 mac-app/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 mac-app/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 mac-app/src-tauri/icons/android/values/ic_launcher_background.xml create mode 100644 mac-app/src-tauri/icons/icon.icns create mode 100644 mac-app/src-tauri/icons/icon.ico create mode 100644 mac-app/src-tauri/icons/icon.png create mode 100644 mac-app/src-tauri/icons/ios/AppIcon-20x20@1x.png create mode 100644 mac-app/src-tauri/icons/ios/AppIcon-20x20@2x-1.png create mode 100644 mac-app/src-tauri/icons/ios/AppIcon-20x20@2x.png create mode 100644 mac-app/src-tauri/icons/ios/AppIcon-20x20@3x.png create mode 100644 mac-app/src-tauri/icons/ios/AppIcon-29x29@1x.png create mode 100644 mac-app/src-tauri/icons/ios/AppIcon-29x29@2x-1.png create mode 100644 mac-app/src-tauri/icons/ios/AppIcon-29x29@2x.png create mode 100644 mac-app/src-tauri/icons/ios/AppIcon-29x29@3x.png create mode 100644 mac-app/src-tauri/icons/ios/AppIcon-40x40@1x.png create mode 100644 mac-app/src-tauri/icons/ios/AppIcon-40x40@2x-1.png create mode 100644 mac-app/src-tauri/icons/ios/AppIcon-40x40@2x.png create mode 100644 mac-app/src-tauri/icons/ios/AppIcon-40x40@3x.png create mode 100644 mac-app/src-tauri/icons/ios/AppIcon-512@2x.png create mode 100644 mac-app/src-tauri/icons/ios/AppIcon-60x60@2x.png create mode 100644 mac-app/src-tauri/icons/ios/AppIcon-60x60@3x.png create mode 100644 mac-app/src-tauri/icons/ios/AppIcon-76x76@1x.png create mode 100644 mac-app/src-tauri/icons/ios/AppIcon-76x76@2x.png create mode 100644 mac-app/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png create mode 100644 mac-app/src-tauri/src/lib.rs create mode 100644 mac-app/src-tauri/src/main.rs create mode 100644 mac-app/src-tauri/tauri.conf.json diff --git a/.gitignore b/.gitignore index 88febb4..a2d5a8a 100644 --- a/.gitignore +++ b/.gitignore @@ -52,4 +52,12 @@ Thumbs.db *.webm *.aac uploads/ -audio/ \ No newline at end of file +audio/ + +# Mac App (Tauri) +mac-app/src-tauri/target/ +mac-app/dist/ +mac-app/src-tauri/binaries/ +mac-app/src-tauri/gen/ +mac-app/node_modules/ +mac-app/icon-source.png \ No newline at end of file diff --git a/database.py b/database.py index 63338d7..3869666 100644 --- a/database.py +++ b/database.py @@ -40,9 +40,14 @@ class Database: def __init__(self, db_path: str = None): if db_path is None: - # 默认放在项目根目录 - project_root = os.path.dirname(os.path.abspath(__file__)) - db_path = os.path.join(project_root, "data", "meetings.db") + # 优先使用环境变量(Tauri 打包后使用),否则使用项目根目录 + env_dir = os.environ.get("MEETING_DATA_DIR") + if env_dir: + data_dir = os.path.join(env_dir, "data") + else: + project_root = os.path.dirname(os.path.abspath(__file__)) + data_dir = os.path.join(project_root, "data") + db_path = os.path.join(data_dir, "meetings.db") # 确保目录存在 os.makedirs(os.path.dirname(db_path), exist_ok=True) diff --git a/frontend/src/api/meeting.js b/frontend/src/api/meeting.js index 37c12fa..ad97d4e 100644 --- a/frontend/src/api/meeting.js +++ b/frontend/src/api/meeting.js @@ -1,6 +1,7 @@ import axios from 'axios' -const API_BASE = '/api' +const isTauri = typeof window !== 'undefined' && '__TAURI_INTERNALS__' in window +const API_BASE = isTauri ? 'http://localhost:8501/api' : '/api' const api = axios.create({ baseURL: API_BASE, diff --git a/frontend/src/pages/Upload.jsx b/frontend/src/pages/Upload.jsx index 0702ddf..80d8dd4 100644 --- a/frontend/src/pages/Upload.jsx +++ b/frontend/src/pages/Upload.jsx @@ -87,7 +87,7 @@ export default function UploadPage() { await pollMeetingStatus(result.meeting_id, (status) => { if (status === 'processing') { - setTranscribeProgress(prev => Math.min(prev + 5, 90)) + setTranscribeProgress(prev => Math.min(prev + 2, 95)) } }) @@ -111,7 +111,9 @@ export default function UploadPage() { const connectWebSocket = () => { const sessionId = `realtime_${Date.now()}_${Math.random().toString(36).slice(2, 8)}` - const ws = new WebSocket(`ws://localhost:8501/ws/realtime/${sessionId}`) + const isTauri = typeof window !== 'undefined' && '__TAURI_INTERNALS__' in window + const wsHost = isTauri ? 'localhost:8501' : window.location.host + const ws = new WebSocket(`ws://${wsHost}/ws/realtime/${sessionId}`) ws.onopen = () => { setWsConnected(true) diff --git a/frontend/src/store/useAppStore.js b/frontend/src/store/useAppStore.js index e368671..3429032 100644 --- a/frontend/src/store/useAppStore.js +++ b/frontend/src/store/useAppStore.js @@ -1,5 +1,8 @@ import { create } from 'zustand' +const isTauri = typeof window !== 'undefined' && '__TAURI_INTERNALS__' in window +const API_BASE = isTauri ? 'http://localhost:8501' : '' + export const useAppStore = create((set, get) => ({ // 会议列表 meetings: [], @@ -38,7 +41,7 @@ export const useAppStore = create((set, get) => ({ refreshMeetings: async () => { set({ loading: true, error: null }) try { - const res = await fetch('/api/meetings') + const res = await fetch(`${API_BASE}/api/meetings`) const data = await res.json() set({ meetings: data.meetings || [], @@ -59,7 +62,7 @@ export const useAppStore = create((set, get) => ({ fetchMeetingDetail: async (meetingId) => { set({ loading: true, error: null }) try { - const res = await fetch(`/api/meetings/${meetingId}`) + const res = await fetch(`${API_BASE}/api/meetings/${meetingId}`) const data = await res.json() set({ currentMeeting: data, loading: false }) return data @@ -101,7 +104,7 @@ export const useAppStore = create((set, get) => ({ set({ loading: false, isTranscribing: false }) reject(new Error('Network error')) } - xhr.open('POST', '/api/meetings/upload') + xhr.open('POST', `${API_BASE}/api/meetings/upload`) xhr.send(formData) }) } catch (err) { @@ -112,7 +115,7 @@ export const useAppStore = create((set, get) => ({ // 轮询会议状态直到完成 pollMeetingStatus: async (meetingId, onStatusChange) => { - const maxAttempts = 60 // 最多轮询60次(约2分钟) + const maxAttempts = 600 // 最多轮询600次(约30分钟) let attempts = 0 const poll = async () => { @@ -122,7 +125,7 @@ export const useAppStore = create((set, get) => ({ attempts++ try { - const res = await fetch(`/api/meetings/${meetingId}`) + const res = await fetch(`${API_BASE}/api/meetings/${meetingId}`) const data = await res.json() onStatusChange?.(data.status) @@ -132,7 +135,7 @@ export const useAppStore = create((set, get) => ({ } // 继续轮询 - await new Promise(r => setTimeout(r, 2000)) // 每2秒轮询一次 + await new Promise(r => setTimeout(r, 3000)) // 每3秒轮询一次 return poll() } catch (err) { throw err diff --git a/mac-app/README.md b/mac-app/README.md new file mode 100644 index 0000000..93b2694 --- /dev/null +++ b/mac-app/README.md @@ -0,0 +1,119 @@ +# 智能会议记录系统 - Mac 原生应用 + +将现有 React + FastAPI 应用打包为 macOS 原生 App。 + +## 架构 + +``` +Tauri (Rust 外壳) + ├── 前端: React (Vite 构建产物嵌入) + └── 后端: Python FastAPI (PyInstaller 打包为 sidecar 二进制) +``` + +- **前端**: 现有 React 代码通过 Vite 构建后嵌入 Tauri +- **后端**: `main.py` 通过 PyInstaller 打包为单文件二进制,作为 Tauri sidecar 进程运行 +- **数据持久化**: 用户数据存储在 `~/Library/Application Support/com.meeting.recorder/data/` +- **麦克风权限**: 通过 Info.plist 配置 NSMicrophoneUsageDescription + +## 前置条件 + +1. **Rust 工具链** (用于编译 Tauri) + ```bash + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + source "$HOME/.cargo/env" + ``` + +2. **PyInstaller** (用于打包 Python 后端) + ```bash + pip3 install pyinstaller + ``` + +3. **Node.js** (用于构建前端) + - 已有 Node.js 环境即可 + +## 构建 + +### 一键构建 + +```bash +cd mac-app +bash scripts/build.sh +``` + +### 分步构建 + +1. **构建前端** + ```bash + bash scripts/build_frontend.sh + ``` + +2. **构建后端 sidecar** + ```bash + bash scripts/build_backend.sh + ``` + +3. **构建 Tauri App** + ```bash + cd mac-app + npm install + npm run build + ``` + +### 开发模式 + +```bash +cd mac-app +npm install +npm run dev +``` + +> 注意: 开发模式下后端需要单独启动 (`python3 main.py`),Tauri dev 模式不会自动拉起 sidecar。 + +## 生成图标 + +准备一张 1024x1024 的 PNG 图标,然后运行: + +```bash +cd mac-app +npx @tauri-apps/cli icon path/to/icon.png +``` + +这会自动生成所有需要的图标尺寸到 `src-tauri/icons/`。 + +## 输出 + +构建完成后: +- **DMG 安装包**: `src-tauri/target/release/bundle/dmg/` +- **App**: `src-tauri/target/release/bundle/macos/` + +## 文件结构 + +``` +mac-app/ +├── package.json # Tauri CLI 依赖 +├── README.md # 本文件 +├── scripts/ +│ ├── build.sh # 一键构建脚本 +│ ├── build_backend.sh # PyInstaller 打包后端 +│ └── build_frontend.sh # Vite 构建前端 +└── src-tauri/ + ├── Cargo.toml # Rust 依赖 + ├── tauri.conf.json # Tauri 配置 + ├── build.rs # Tauri 构建脚本 + ├── capabilities/ + │ └── default.json # 权限配置 (shell sidecar) + ├── icons/ # 应用图标 + └── src/ + ├── main.rs # Rust 入口 + └── lib.rs # Sidecar 进程管理 +``` + +## 修改说明 + +为支持 Tauri 打包,对原项目做了以下修改: + +1. **`frontend/src/api/meeting.js`**: 添加 Tauri 环境检测,在 Tauri 中直接连接 `localhost:8501` +2. **`main.py`**: 添加 `get_data_dir()` 函数,支持 `MEETING_DATA_DIR` 环境变量 +3. **`database.py`**: Database 初始化支持 `MEETING_DATA_DIR` 环境变量 + +这些修改向后兼容,不影响原有开发模式。 diff --git a/mac-app/package-lock.json b/mac-app/package-lock.json new file mode 100644 index 0000000..1c42d6a --- /dev/null +++ b/mac-app/package-lock.json @@ -0,0 +1,247 @@ +{ + "name": "meeting-recorder-mac-app", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "meeting-recorder-mac-app", + "version": "1.0.0", + "devDependencies": { + "@tauri-apps/cli": "^2" + } + }, + "node_modules/@tauri-apps/cli": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli/-/cli-2.11.4.tgz", + "integrity": "sha512-R8xGtMpwyetawSqm9kYOuMmEqkhUbvcUy8n0aNXIxollKBLESUu5f4Fx+64hgASYm1H+jSWq6jCW6zqTnH6hqQ==", + "dev": true, + "license": "Apache-2.0 OR MIT", + "bin": { + "tauri": "tauri.js" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/tauri" + }, + "optionalDependencies": { + "@tauri-apps/cli-darwin-arm64": "2.11.4", + "@tauri-apps/cli-darwin-x64": "2.11.4", + "@tauri-apps/cli-linux-arm-gnueabihf": "2.11.4", + "@tauri-apps/cli-linux-arm64-gnu": "2.11.4", + "@tauri-apps/cli-linux-arm64-musl": "2.11.4", + "@tauri-apps/cli-linux-riscv64-gnu": "2.11.4", + "@tauri-apps/cli-linux-x64-gnu": "2.11.4", + "@tauri-apps/cli-linux-x64-musl": "2.11.4", + "@tauri-apps/cli-win32-arm64-msvc": "2.11.4", + "@tauri-apps/cli-win32-ia32-msvc": "2.11.4", + "@tauri-apps/cli-win32-x64-msvc": "2.11.4" + } + }, + "node_modules/@tauri-apps/cli-darwin-arm64": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.11.4.tgz", + "integrity": "sha512-1ryOF3ZhpZ/nemHV5zVwBQBz9jDGKmKPvWPADOhc83ig0P4bMc2iER4NbC6r9sjeIZ6RVQ4g3RZIYvezhcl4TQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-darwin-x64": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-2.11.4.tgz", + "integrity": "sha512-uFsGQAAfuyz1k/yGLmkWfkBlgKAqZfxqlHmLWx81QU27RJWfmbNHCIq8T8w1e+VClleIuZUjpHWfoE4E3DLo3A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm-gnueabihf": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-2.11.4.tgz", + "integrity": "sha512-IaHZn5CdBL21oUmjiVOS1ctw6Ip1O0pjp70FwOWmYz1myWe0SY96ZIj2FYf7pT0m8bI2h/hrs5ZbEXXh44/MkQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm64-gnu": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-2.11.4.tgz", + "integrity": "sha512-N41/ukTRVe6XSuUTESuFdGeOW2i7k62tK+6gHK5Kd5/q5RPvvi19GaWAVPPb9u95HSGmTChSolBfzynUsssFaA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-arm64-musl": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.11.4.tgz", + "integrity": "sha512-v277UnT/fB64xAfSroL5N3Km3tLmvATWqJJw/wRI+g6o+HkeD0slyE7gOhNs1MbjE41R7bQOTxMVoL3aomUJmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-riscv64-gnu": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-linux-riscv64-gnu/-/cli-linux-riscv64-gnu-2.11.4.tgz", + "integrity": "sha512-qqgNkQ2u1yZHxjhxsZaxUtRDW8dIqIYm33rx/mzwQv0SfY9x1B+iraj8vWeFiXjjSVVhEMepXSOts1TqPzvXNQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-gnu": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-2.11.4.tgz", + "integrity": "sha512-2VRNWl84FOH0m2giiDkO2h0QXlcMJeX+zJDpI5kDIQAx6s+geF3v48F4DXfJez4GS/FdoDGnPnw1C2iYGbQ7bQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-linux-x64-musl": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-2.11.4.tgz", + "integrity": "sha512-o9GyhYor/nc7xarmwDE3ka2szuW3uuZzXjHWh64Q8YX5AtSgxdQkFWzrY4O8KiGtVNvFBI14H3Q49Qj5TOIP/A==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-arm64-msvc": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-2.11.4.tgz", + "integrity": "sha512-ld5Ehb598m0VkYyylRPNeCFsBe/km0jxis6KgMpl3IGY6I/i1RwQXO05I1AsXUXO2WC6AvB/Lw4qTf/asiuEiQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-ia32-msvc": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-2.11.4.tgz", + "integrity": "sha512-12Hxi0XX/H5VFxO/bGgHkFWhml9VMgEOu9CidjeCeTNQ1l6fpUlbiGgSP7CLI3PFtW9/FfbeHieZ+kyWK5H7CA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tauri-apps/cli-win32-x64-msvc": { + "version": "2.11.4", + "resolved": "https://registry.npmmirror.com/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-2.11.4.tgz", + "integrity": "sha512-+vDiqBIU5dMISg/wNvX3sF+ZHfgJGJ5T0AcO+EHNXV9GGAG+P5fzodlDXD3QdKCRgZxMoCm5PPvj3BqLNjBthw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 OR MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + } + } +} diff --git a/mac-app/package.json b/mac-app/package.json new file mode 100644 index 0000000..08d6ebb --- /dev/null +++ b/mac-app/package.json @@ -0,0 +1,13 @@ +{ + "name": "meeting-recorder-mac-app", + "private": true, + "version": "1.0.0", + "scripts": { + "tauri": "tauri", + "dev": "tauri dev", + "build": "tauri build" + }, + "devDependencies": { + "@tauri-apps/cli": "^2" + } +} diff --git a/mac-app/scripts/build.sh b/mac-app/scripts/build.sh new file mode 100755 index 0000000..b38fddf --- /dev/null +++ b/mac-app/scripts/build.sh @@ -0,0 +1,48 @@ +#!/bin/bash +# 一键构建 Mac App +set -e + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +APP_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" + +echo "==========================================" +echo " 智能会议记录系统 - Mac App 构建" +echo "==========================================" + +# 检查 Rust +if ! command -v rustc &> /dev/null; then + echo "❌ Rust 未安装,请先安装: https://rustup.rs" + exit 1 +fi + +# 检查 PyInstaller +if ! command -v pyinstaller &> /dev/null && ! python3 -m PyInstaller --version &> /dev/null 2>&1; then + echo "❌ PyInstaller 未安装,请运行: pip3 install pyinstaller" + exit 1 +fi + +# 检查 Node.js +if ! command -v node &> /dev/null; then + echo "❌ Node.js 未安装" + exit 1 +fi + +echo "" +echo "步骤 1/3: 构建前端..." +bash "$SCRIPT_DIR/build_frontend.sh" + +echo "" +echo "步骤 2/3: 构建后端 sidecar..." +bash "$SCRIPT_DIR/build_backend.sh" + +echo "" +echo "步骤 3/3: 构建 Tauri App..." +cd "$APP_DIR" +npm install +npm run build + +echo "" +echo "==========================================" +echo " ✅ 构建完成!" +echo " DMG 文件位于: $APP_DIR/src-tauri/target/release/bundle/dmg/" +echo "==========================================" diff --git a/mac-app/scripts/build_backend.sh b/mac-app/scripts/build_backend.sh new file mode 100755 index 0000000..5453d72 --- /dev/null +++ b/mac-app/scripts/build_backend.sh @@ -0,0 +1,56 @@ +#!/bin/bash +# 构建后端 sidecar 二进制文件 (PyInstaller) +set -e + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" +BUILD_DIR="$SCRIPT_DIR/../dist" + +echo "=== 构建后端 sidecar (PyInstaller) ===" +echo "项目根目录: $PROJECT_ROOT" +echo "构建输出: $BUILD_DIR" + +# 清理旧构建 +rm -rf "$BUILD_DIR/backend" +mkdir -p "$BUILD_DIR/backend" + +# 获取当前平台 target triple +TARGET_TRIPLE=$(rustc -vV 2>/dev/null | grep host | awk '{print $2}') +if [ -z "$TARGET_TRIPLE" ]; then + # 默认 Apple Silicon + TARGET_TRIPLE="aarch64-apple-darwin" +fi +echo "目标平台: $TARGET_TRIPLE" + +# 使用 PyInstaller 打包 +cd "$PROJECT_ROOT" + +pyinstaller \ + --onefile \ + --name "meeting-backend" \ + --distpath "$BUILD_DIR/backend" \ + --workpath "$BUILD_DIR/backend/build" \ + --specpath "$BUILD_DIR/backend" \ + --add-data "database.py:." \ + --add-data "processor.py:." \ + --add-data "audio_utils.py:." \ + --hidden-import funasr \ + --hidden-import funasr.auto \ + --hidden-import soundfile \ + --hidden-import pydub \ + --hidden-import sqlalchemy \ + --hidden-import openai \ + --collect-all funasr \ + --collect-all torch \ + --collect-all torchaudio \ + --noconfirm \ + main.py + +# 复制到 Tauri sidecar 目录,加上 target triple 后缀 +SIDECAR_DIR="$SCRIPT_DIR/../src-tauri/binaries" +mkdir -p "$SIDECAR_DIR" +cp "$BUILD_DIR/backend/meeting-backend" "$SIDECAR_DIR/meeting-backend-$TARGET_TRIPLE" +chmod +x "$SIDECAR_DIR/meeting-backend-$TARGET_TRIPLE" + +echo "=== 后端构建完成 ===" +echo "Sidecar 二进制: $SIDECAR_DIR/meeting-backend-$TARGET_TRIPLE" diff --git a/mac-app/scripts/build_frontend.sh b/mac-app/scripts/build_frontend.sh new file mode 100755 index 0000000..7f03eda --- /dev/null +++ b/mac-app/scripts/build_frontend.sh @@ -0,0 +1,15 @@ +#!/bin/bash +# 构建前端 (Vite build) +set -e + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +FRONTEND_DIR="$(cd "$SCRIPT_DIR/../../frontend" && pwd)" + +echo "=== 构建前端 (Vite) ===" +echo "前端目录: $FRONTEND_DIR" + +cd "$FRONTEND_DIR" +npm run build + +echo "=== 前端构建完成 ===" +echo "输出目录: $FRONTEND_DIR/dist" diff --git a/mac-app/src-tauri/Cargo.lock b/mac-app/src-tauri/Cargo.lock new file mode 100644 index 0000000..7ff202b --- /dev/null +++ b/mac-app/src-tauri/Cargo.lock @@ -0,0 +1,4695 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e76a019e91224d279006ff972f1e984179a6e9feb050adba6ce8274aef23195" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3" + +[[package]] +name = "atk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" +dependencies = [ + "atk-sys", + "glib", + "libc", +] + +[[package]] +name = "atk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" +dependencies = [ + "serde_core", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" +dependencies = [ + "objc2", +] + +[[package]] +name = "brotli" +version = "8.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc91aac060a7a1e25823bdccbfb6af1875b88f17c6daac97894eed8207166b3" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a32acac15fe1967bc3986b2a6347dffc965602354ea6f450ad07e8bfd253583" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bumpalo" +version = "3.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" + +[[package]] +name = "bytemuck" +version = "1.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" +dependencies = [ + "serde", +] + +[[package]] +name = "cairo-rs" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" +dependencies = [ + "bitflags 2.13.0", + "cairo-sys-rs", + "glib", + "libc", + "once_cell", + "thiserror 1.0.69", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "camino" +version = "1.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f2d30e4173c4026932d51d31d6b0613b1fd3014bf3f9f8943d4ba139c437ba0" +dependencies = [ + "serde_core", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror 2.0.18", +] + +[[package]] +name = "cargo_toml" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77" +dependencies = [ + "serde", + "toml 0.9.12+spec-1.1.0", +] + +[[package]] +name = "cc" +version = "1.2.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfb" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +dependencies = [ + "byteorder", + "fnv", + "uuid", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "chrono" +version = "0.4.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" +dependencies = [ + "iana-time-zone", + "num-traits", + "serde", + "windows-link 0.2.1", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "time", + "version_check", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "064badf302c3194842cf2c5d61f56cc88e54a759313879cdf03abdd27d0c3b97" +dependencies = [ + "bitflags 2.13.0", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.13.0", + "core-foundation", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d85363c37faeca707aef026efa9f3b34d077bce547e48f770770625c6013679e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cssparser" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dae61cf9c0abb83bd659dab65b7e4e38d8236824c85f0f804f173567bda257d2" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "phf", + "smallvec", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn 2.0.118", +] + +[[package]] +name = "ctor" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "352d39c2f7bef1d6ad73db6f5160efcaed66d94ef8c6c573a8410c00bf909a98" +dependencies = [ + "ctor-proc-macro", + "dtor", +] + +[[package]] +name = "ctor-proc-macro" +version = "0.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52560adf09603e58c9a7ee1fe1dcb95a16927b17c127f0ac02d6e768a0e25bc1" + +[[package]] +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.118", +] + +[[package]] +name = "darling_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "dbus" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab69f03cc8c4340c9c8e315114e1658e6775a9b16a04357973aa21cec22b32e" +dependencies = [ + "libc", + "libdbus-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "serde_core", +] + +[[package]] +name = "derive_more" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.118", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys 0.4.1", +] + +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys 0.5.0", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users 0.4.6", + "windows-sys 0.48.0", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users 0.5.2", + "windows-sys 0.61.2", +] + +[[package]] +name = "dispatch2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" +dependencies = [ + "bitflags 2.13.0", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "displaydoc" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "dlopen2" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "dom_query" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521e380c0c8afb8d9a1e83a1822ee03556fc3e3e7dbc1fd30be14e37f9cb3f89" +dependencies = [ + "bit-set", + "cssparser", + "foldhash", + "html5ever", + "precomputed-hash", + "selectors", + "tendril", +] + +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" +dependencies = [ + "serde", +] + +[[package]] +name = "dtoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590" + +[[package]] +name = "dtoa-short" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +dependencies = [ + "dtoa", +] + +[[package]] +name = "dtor" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1057d6c64987086ff8ed0fd3fbf377a6b7d205cc7715868cd401705f715cbe4" +dependencies = [ + "dtor-proc-macro", +] + +[[package]] +name = "dtor-proc-macro" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f678cf4a922c215c63e0de95eb1ff08a958a81d47e485cf9da1e27bf6305cfa5" + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "embed-resource" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbfdaacccebec3b28e4866b8973543c7647797db5ada1bdab552e48fe665fbbd" +dependencies = [ + "cc", + "memchr", + "rustc_version", + "toml 1.1.2+spec-1.1.0", + "vswhom", + "winreg", +] + +[[package]] +name = "embed_plist" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "erased-serde" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" +dependencies = [ + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "fastrand" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "flate2" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-executor" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + +[[package]] +name = "futures-macro" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "futures-sink" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "gdk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" +dependencies = [ + "cairo-rs", + "gdk-pixbuf", + "gdk-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" +dependencies = [ + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", + "once_cell", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkwayland-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69" +dependencies = [ + "gdk-sys", + "glib-sys", + "gobject-sys", + "libc", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkx11" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe" +dependencies = [ + "gdk", + "gdkx11-sys", + "gio", + "glib", + "libc", + "x11", +] + +[[package]] +name = "gdkx11-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d" +dependencies = [ + "gdk-sys", + "glib-sys", + "libc", + "system-deps", + "x11", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi 5.3.0", + "wasip2", +] + +[[package]] +name = "getrandom" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", +] + +[[package]] +name = "gio" +version = "0.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "once_cell", + "pin-project-lite", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "gio-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glib" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" +dependencies = [ + "bitflags 2.13.0", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "memchr", + "once_cell", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "glib-macros" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" +dependencies = [ + "heck 0.4.1", + "proc-macro-crate 2.0.2", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "glib-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "gobject-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gtk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" +dependencies = [ + "atk", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk", + "gdk-pixbuf", + "gio", + "glib", + "gtk-sys", + "gtk3-macros", + "libc", + "pango", + "pkg-config", +] + +[[package]] +name = "gtk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gtk3-macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "html5ever" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1054432bae2f14e0061e33d23402fbaa67a921d319d56adc6bcf887ddad1cbc2" +dependencies = [ + "log", + "markup5ever", +] + +[[package]] +name = "http" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core 0.62.2", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ico" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e795dff5605e0f04bff85ca41b51a96b83e80b281e96231bcaaf1ac35103371" +dependencies = [ + "byteorder", + "png 0.17.16", +] + +[[package]] +name = "icu_collections" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" +dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" + +[[package]] +name = "icu_properties" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" + +[[package]] +name = "icu_provider" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +dependencies = [ + "equivalent", + "hashbrown 0.17.1", + "serde", + "serde_core", +] + +[[package]] +name = "infer" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" +dependencies = [ + "cfb", +] + +[[package]] +name = "ipnet" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" + +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "javascriptcore-rs" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" +dependencies = [ + "bitflags 1.3.2", + "glib", + "javascriptcore-rs-sys", +] + +[[package]] +name = "javascriptcore-rs-sys" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys 0.3.1", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.118", +] + +[[package]] +name = "js-sys" +version = "0.3.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" +dependencies = [ + "cfg-if", + "futures-util", + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" +dependencies = [ + "jsonptr", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "jsonptr" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.13.0", + "serde", + "unicode-segmentation", +] + +[[package]] +name = "libappindicator" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" +dependencies = [ + "glib", + "gtk", + "gtk-sys", + "libappindicator-sys", + "log", +] + +[[package]] +name = "libappindicator-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" +dependencies = [ + "gtk-sys", + "libloading", + "once_cell", +] + +[[package]] +name = "libc" +version = "0.2.186" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" + +[[package]] +name = "libdbus-sys" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "328c4789d42200f1eeec05bd86c9c13c7f091d2ba9a6ea35acdf51f31bc0f043" +dependencies = [ + "pkg-config", +] + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libredox" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652" +dependencies = [ + "libc", +] + +[[package]] +name = "litemap" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" + +[[package]] +name = "markup5ever" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8983d30f2915feeaaab2d6babdd6bc7e9ed1a00b66b5e6d74df19aa9c0e91862" +dependencies = [ + "log", + "tendril", + "web_atoms", +] + +[[package]] +name = "meeting-recorder" +version = "1.0.0" +dependencies = [ + "dirs 5.0.1", + "serde", + "serde_json", + "tauri", + "tauri-build", + "tauri-plugin-shell", +] + +[[package]] +name = "memchr" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "muda" +version = "0.19.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd04e60bc0b07438a6771710ee1698f98f6ebbc7f89b61264af1563b8aeb878" +dependencies = [ + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "once_cell", + "png 0.18.1", + "serde", + "thiserror 2.0.18", + "windows-sys 0.61.2", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.13.0", + "jni-sys 0.3.1", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys 0.3.1", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "num-conv" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" +dependencies = [ + "proc-macro-crate 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "objc2" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" +dependencies = [ + "objc2-encode", + "objc2-exception-helper", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" +dependencies = [ + "bitflags 2.13.0", + "block2", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" +dependencies = [ + "bitflags 2.13.0", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.13.0", + "dispatch2", + "objc2", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags 2.13.0", + "dispatch2", + "objc2", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-core-image" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-location" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-text" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" +dependencies = [ + "bitflags 2.13.0", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-exception-helper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" +dependencies = [ + "cc", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.13.0", + "block2", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags 2.13.0", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" +dependencies = [ + "bitflags 2.13.0", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" +dependencies = [ + "bitflags 2.13.0", + "block2", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-image", + "objc2-core-location", + "objc2-core-text", + "objc2-foundation", + "objc2-quartz-core", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-web-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f" +dependencies = [ + "bitflags 2.13.0", + "block2", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "open" +version = "5.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd8d3b65c44123a56e0133d2cd06ce4361bd3ca99d41198b2f25e3c3db9b8b4a" +dependencies = [ + "dunce", + "is-wsl", + "libc", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "os_pipe" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "pango" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" +dependencies = [ + "gio", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link 0.2.1", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_macros", + "phf_shared", + "serde", +] + +[[package]] +name = "phf_codegen" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" +dependencies = [ + "fastrand", + "phf_shared", +] + +[[package]] +name = "phf_macros" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "pkg-config" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "plist" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da1d65da6dd5d1e44199ac0f58712d241c0f439f80adea8924d832384087f85" +dependencies = [ + "base64 0.22.1", + "indexmap 2.14.0", + "quick-xml", + "serde", + "time", +] + +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "png" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" +dependencies = [ + "bitflags 2.13.0", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "potential_utf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" +dependencies = [ + "toml_datetime 0.6.3", + "toml_edit 0.20.2", +] + +[[package]] +name = "proc-macro-crate" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" +dependencies = [ + "toml_edit 0.25.12+spec-1.1.0", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-xml" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.13.0", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.17", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.17", + "libredox", + "thiserror 2.0.18", +] + +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "regex" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + +[[package]] +name = "reqwest" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "sync_wrapper", + "tokio", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", +] + +[[package]] +name = "rustc-hash" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustversion" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive", + "serde", + "serde_json", + "url", + "uuid", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.118", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "selectors" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5d9c0c92a92d33f08817311cf3f2c29a3538a8240e94a6a3c622ce652d7e00c" +dependencies = [ + "bitflags 2.13.0", + "cssparser", + "derive_more", + "log", + "new_debug_unreachable", + "phf", + "phf_codegen", + "precomputed-hash", + "rustc-hash", + "servo_arc", + "smallvec", +] + +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-untagged" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058" +dependencies = [ + "erased-serde", + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "serde_json" +version = "1.0.150" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_spanned" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" +dependencies = [ + "serde_core", +] + +[[package]] +name = "serde_with" +version = "3.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a5c54c7310e7b8b9577c286d7e399ddd876c3e12b3ed917a8aabc4b96e9e8c" +dependencies = [ + "base64 0.22.1", + "bs58", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.14.0", + "schemars 0.9.0", + "schemars 1.2.1", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84d57bc0c8b9a17920c178daa6bb924850d54a9c97ab45194bb8c17ad66bb660" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "serialize-to-javascript" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5" +dependencies = [ + "serde", + "serde_json", + "serialize-to-javascript-impl", +] + +[[package]] +name = "serialize-to-javascript-impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "servo_arc" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "170fb83ab34de17dc69aa7c67482b22218ddb85da56546f9bd6b929e32a05930" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shared_child" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e362d9935bc50f019969e2f9ecd66786612daae13e8f277be7bfb66e8bed3f7" +dependencies = [ + "libc", + "sigchld", + "windows-sys 0.60.2", +] + +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "sigchld" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47106eded3c154e70176fc83df9737335c94ce22f821c32d17ed1db1f83badb1" +dependencies = [ + "libc", + "os_pipe", + "signal-hook", +] + +[[package]] +name = "signal-hook" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" + +[[package]] +name = "siphasher" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" + +[[package]] +name = "socket2" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "softbuffer" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac18da81ebbf05109ab275b157c22a653bb3c12cf884450179942f81bcbf6c3" +dependencies = [ + "bytemuck", + "js-sys", + "ndk", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle", + "redox_syscall", + "tracing", + "wasm-bindgen", + "web-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "soup3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" +dependencies = [ + "futures-channel", + "gio", + "glib", + "libc", + "soup3-sys", +] + +[[package]] +name = "soup3-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "string_cache" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared", + "precomputed-hash", +] + +[[package]] +name = "string_cache_codegen" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "585635e46db231059f76c5849798146164652513eb9e8ab2685939dd90f29b69" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "swift-rs" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" +dependencies = [ + "base64 0.21.7", + "serde", + "serde_json", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck 0.5.0", + "pkg-config", + "toml 0.8.2", + "version-compare", +] + +[[package]] +name = "tao" +version = "0.35.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1c93047acf68669466a34690ac58cca7010bd1b201e1ec86f1fd0a75d3dd4a9" +dependencies = [ + "bitflags 2.13.0", + "block2", + "core-foundation", + "core-graphics", + "crossbeam-channel", + "dbus", + "dispatch2", + "dlopen2", + "dpi", + "gdkwayland-sys", + "gdkx11-sys", + "gtk", + "jni", + "libc", + "log", + "ndk", + "ndk-sys", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "once_cell", + "parking_lot", + "percent-encoding", + "raw-window-handle", + "tao-macros", + "unicode-segmentation", + "url", + "windows", + "windows-core 0.61.2", + "windows-version", + "x11-dl", +] + +[[package]] +name = "tao-macros" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tauri" +version = "2.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "667b20e2726d572dea2de7370da16e188eb06008faf9a92fab7cdc46791190b5" +dependencies = [ + "anyhow", + "bytes", + "cookie", + "dirs 6.0.0", + "dunce", + "embed_plist", + "getrandom 0.3.4", + "glob", + "gtk", + "heck 0.5.0", + "http", + "jni", + "libc", + "log", + "mime", + "muda", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", + "percent-encoding", + "plist", + "raw-window-handle", + "reqwest", + "serde", + "serde_json", + "serde_repr", + "serialize-to-javascript", + "swift-rs", + "tauri-build", + "tauri-macros", + "tauri-runtime", + "tauri-runtime-wry", + "tauri-utils", + "thiserror 2.0.18", + "tokio", + "tray-icon", + "url", + "webkit2gtk", + "webview2-com", + "window-vibrancy", + "windows", +] + +[[package]] +name = "tauri-build" +version = "2.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc9ce40b16101cb6ea63d3e221567affd1c3a9205f95d7bc574941a10636b632" +dependencies = [ + "anyhow", + "cargo_toml", + "dirs 6.0.0", + "glob", + "heck 0.5.0", + "json-patch", + "schemars 0.8.22", + "semver", + "serde", + "serde_json", + "tauri-utils", + "tauri-winres", + "walkdir", +] + +[[package]] +name = "tauri-codegen" +version = "2.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08279169ff42f8fc45a1dbc9dcae888893ba95288142e5880c59b93a26d2cfc5" +dependencies = [ + "base64 0.22.1", + "brotli", + "ico", + "json-patch", + "plist", + "png 0.17.16", + "proc-macro2", + "quote", + "semver", + "serde", + "serde_json", + "sha2", + "syn 2.0.118", + "tauri-utils", + "thiserror 2.0.18", + "time", + "url", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-macros" +version = "2.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8b394794f399a421811d06966343e7933fcae92d59f5180b9388d1174497a45" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.118", + "tauri-codegen", + "tauri-utils", +] + +[[package]] +name = "tauri-plugin" +version = "2.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74be5dd4bed9afbd145e5716b5fa2ec28cbc29c34ffa61c258c9273d896c8020" +dependencies = [ + "anyhow", + "glob", + "plist", + "schemars 0.8.22", + "serde", + "serde_json", + "tauri-utils", + "walkdir", +] + +[[package]] +name = "tauri-plugin-shell" +version = "2.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8457dbf9e2bab1edd8df22bb2c20857a59a9868e79cb3eac5ed639eec4d0c73b" +dependencies = [ + "encoding_rs", + "log", + "open", + "os_pipe", + "regex", + "schemars 0.8.22", + "serde", + "serde_json", + "shared_child", + "tauri", + "tauri-plugin", + "thiserror 2.0.18", + "tokio", +] + +[[package]] +name = "tauri-runtime" +version = "2.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0b4bc95aed361b0019067d189a1174a603d460d0f6c72606512d59fc9c12ec8" +dependencies = [ + "cookie", + "dpi", + "gtk", + "http", + "jni", + "objc2", + "objc2-ui-kit", + "objc2-web-kit", + "raw-window-handle", + "serde", + "serde_json", + "tauri-utils", + "thiserror 2.0.18", + "url", + "webkit2gtk", + "webview2-com", + "windows", +] + +[[package]] +name = "tauri-runtime-wry" +version = "2.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e6fac707727b7a2f48e4ded90976324267371073edbb415ffb73bb0458d203f" +dependencies = [ + "gtk", + "http", + "jni", + "log", + "objc2", + "objc2-app-kit", + "once_cell", + "percent-encoding", + "raw-window-handle", + "softbuffer", + "tao", + "tauri-runtime", + "tauri-utils", + "url", + "webkit2gtk", + "webview2-com", + "windows", + "wry", +] + +[[package]] +name = "tauri-utils" +version = "2.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e176a18e67764923c4f1ce66f25ae4abe5f688384d5eb1a0fa6c77f3d90f887" +dependencies = [ + "anyhow", + "brotli", + "cargo_metadata", + "ctor", + "dom_query", + "dunce", + "glob", + "http", + "infer", + "json-patch", + "log", + "memchr", + "phf", + "plist", + "proc-macro2", + "quote", + "regex", + "schemars 0.8.22", + "semver", + "serde", + "serde-untagged", + "serde_json", + "serde_with", + "swift-rs", + "thiserror 2.0.18", + "toml 1.1.2+spec-1.1.0", + "url", + "urlpattern", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-winres" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc65d45c68858bfe420dd29e834b5d15dbecf8a07a8a16cf4d532c7b1f69d4b6" +dependencies = [ + "dunce", + "embed-resource", + "toml 1.1.2+spec-1.1.0", +] + +[[package]] +name = "tendril" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fed54709c5b3a53d09bb1c113ea4f5ceafd1e772ddcb0030a82e1d56c087b08" +dependencies = [ + "new_debug_unreachable", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "time" +version = "0.3.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18dfaaeddcb932337b5e7866ee7d0ce9b76d2fd092997146f187ec09b4558a50" +dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" + +[[package]] +name = "time-macros" +version = "0.2.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c431b87111666e491a90baa837f914fb45cd5dc3c268591b0220ff5057f2085f" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.52.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" +dependencies = [ + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +dependencies = [ + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.3", + "toml_edit 0.20.2", +] + +[[package]] +name = "toml" +version = "0.9.12+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" +dependencies = [ + "indexmap 2.14.0", + "serde_core", + "serde_spanned 1.1.1", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow 0.7.15", +] + +[[package]] +name = "toml" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" +dependencies = [ + "indexmap 2.14.0", + "serde_core", + "serde_spanned 1.1.1", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow 1.0.3", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.14.0", + "toml_datetime 0.6.3", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap 2.14.0", + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.3", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.25.12+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7" +dependencies = [ + "indexmap 2.14.0", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "winnow 1.0.3", +] + +[[package]] +name = "toml_parser" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" +dependencies = [ + "winnow 1.0.3", +] + +[[package]] +name = "toml_writer" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" +dependencies = [ + "bitflags 2.13.0", + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", + "url", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tray-icon" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65ba1e5f6b9ef9fd87e21b9c6f351554dbd717960089168fcfdef854686961dc" +dependencies = [ + "crossbeam-channel", + "dirs 6.0.0", + "libappindicator", + "muda", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation", + "once_cell", + "png 0.18.1", + "serde", + "thiserror 2.0.18", + "windows-sys 0.61.2", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-segmentation" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", + "serde_derive", +] + +[[package]] +name = "urlpattern" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +dependencies = [ + "regex", + "serde", + "unic-ucd-ident", + "url", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.23.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" +dependencies = [ + "getrandom 0.4.3", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "version-compare" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vswhom" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" +dependencies = [ + "libc", + "vswhom-sys", +] + +[[package]] +name = "vswhom-sys" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.4+wasi-0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.118", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-streams" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web_atoms" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "075474b12bcb3d2e3d4546580e9de478eeeead668a1761e2a8860c836b7ef297" +dependencies = [ + "phf", + "phf_codegen", + "string_cache", + "string_cache_codegen", +] + +[[package]] +name = "webkit2gtk" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1027150013530fb2eaf806408df88461ae4815a45c541c8975e61d6f2fc4793" +dependencies = [ + "bitflags 1.3.2", + "cairo-rs", + "gdk", + "gdk-sys", + "gio", + "gio-sys", + "glib", + "glib-sys", + "gobject-sys", + "gtk", + "gtk-sys", + "javascriptcore-rs", + "libc", + "once_cell", + "soup3", + "webkit2gtk-sys", +] + +[[package]] +name = "webkit2gtk-sys" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "916a5f65c2ef0dfe12fff695960a2ec3d4565359fdbb2e9943c974e06c734ea5" +dependencies = [ + "bitflags 1.3.2", + "cairo-sys-rs", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk-sys", + "javascriptcore-rs-sys", + "libc", + "pkg-config", + "soup3-sys", + "system-deps", +] + +[[package]] +name = "webview2-com" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7130243a7a5b33c54a444e54842e6a9e133de08b5ad7b5861cd8ed9a6a5bc96a" +dependencies = [ + "webview2-com-macros", + "webview2-com-sys", + "windows", + "windows-core 0.61.2", + "windows-implement", + "windows-interface", +] + +[[package]] +name = "webview2-com-macros" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a921c1b6914c367b2b823cd4cde6f96beec77d30a939c8199bb377cf9b9b54" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "webview2-com-sys" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c" +dependencies = [ + "thiserror 2.0.18", + "windows", + "windows-core 0.61.2", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "window-vibrancy" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" +dependencies = [ + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "raw-window-handle", + "windows-sys 0.59.0", + "windows-version", +] + +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections", + "windows-core 0.61.2", + "windows-future", + "windows-link 0.1.3", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core 0.61.2", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-version" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" + +[[package]] +name = "winnow" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.55.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" +dependencies = [ + "cfg-if", + "windows-sys 0.59.0", +] + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "writeable" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" + +[[package]] +name = "wry" +version = "0.55.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186f9871daa55fd9c016578b810d149de58367113db7fb72b462d2323ce19514" +dependencies = [ + "base64 0.22.1", + "block2", + "cookie", + "crossbeam-channel", + "dirs 6.0.0", + "dom_query", + "dpi", + "dunce", + "gdkx11", + "gtk", + "http", + "javascriptcore-rs", + "jni", + "libc", + "ndk", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", + "once_cell", + "percent-encoding", + "raw-window-handle", + "sha2", + "soup3", + "tao-macros", + "thiserror 2.0.18", + "url", + "webkit2gtk", + "webkit2gtk-sys", + "webview2-com", + "windows", + "windows-core 0.61.2", + "windows-version", + "x11-dl", +] + +[[package]] +name = "x11" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "yoke" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + "synstructure", +] + +[[package]] +name = "zerofrom" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", + "synstructure", +] + +[[package]] +name = "zerotrie" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.118", +] + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/mac-app/src-tauri/Cargo.toml b/mac-app/src-tauri/Cargo.toml new file mode 100644 index 0000000..c2ec190 --- /dev/null +++ b/mac-app/src-tauri/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "meeting-recorder" +version = "1.0.0" +description = "智能会议记录系统" +authors = ["freedak"] +edition = "2021" + +[lib] +name = "meeting_recorder_lib" +crate-type = ["staticlib", "cdylib", "rlib"] + +[build-dependencies] +tauri-build = { version = "2", features = [] } + +[dependencies] +tauri = { version = "2", features = [] } +tauri-plugin-shell = "2" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +dirs = "5" diff --git a/mac-app/src-tauri/Info.plist b/mac-app/src-tauri/Info.plist new file mode 100644 index 0000000..dc75563 --- /dev/null +++ b/mac-app/src-tauri/Info.plist @@ -0,0 +1,10 @@ + + + + + NSMicrophoneUsageDescription + 需要麦克风权限以录制会议音频 + NSAudioUsageDescription + 需要音频权限以处理会议录音 + + diff --git a/mac-app/src-tauri/build.rs b/mac-app/src-tauri/build.rs new file mode 100644 index 0000000..d860e1e --- /dev/null +++ b/mac-app/src-tauri/build.rs @@ -0,0 +1,3 @@ +fn main() { + tauri_build::build() +} diff --git a/mac-app/src-tauri/capabilities/default.json b/mac-app/src-tauri/capabilities/default.json new file mode 100644 index 0000000..b9c7bf9 --- /dev/null +++ b/mac-app/src-tauri/capabilities/default.json @@ -0,0 +1,13 @@ +{ + "identifier": "default", + "description": "Default capability for Meeting Recorder", + "windows": ["main"], + "permissions": [ + "core:default", + "core:window:allow-close", + "core:window:allow-destroy", + "shell:allow-spawn", + "shell:allow-execute", + "shell:allow-kill" + ] +} diff --git a/mac-app/src-tauri/icons/128x128.png b/mac-app/src-tauri/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..96b8cb71300c5f20cfd3658ffc0efc0b4f3a7c29 GIT binary patch literal 4316 zcmbtY=ReyG-~CxZ2&z%FixzE>7PU96J&RJK2rVU4?OHKvwWv{CW=bpejJ;wjtv!lb zu{R-hc&_^&cwXH1i|;uv&g=6z=X|5|b=4qXRxkhn5Dj%z!+#n1pQ8f(iyiVd{Q$s_ ztD&l7)M7}Yzf3?Yo_!O-5ec$vG3to&_K&OMWJq5<>i{}9gAk+W`I z+r(^)nV+{8F7u@Mr1hF(K2=EQ5MgLoV_T?&0#K?XiczFUMhf5_7|?_QNdka?0id7r zzX-?!?&zRymrjK=(S9rLQ9hIqTFi6TLEXS6JtFZs z*QoH*AOe5(V0nrpqy%8N+tu-5bR*Ej@H3x|l_DgDd3ZT-09{y^I5q9m8I7n5eE1OT zkqpRq$Ew>!v*+rFSlltAjg%)*T#F}olrJeQdctSo(*X9PIwrOTpMk zY#5W*pYPkvSXhuLq}lE_<@`RZGINj)LW-E7A>ZL%>tVFsuMBo49Pj24cZwXYTa3ph zPYgI2D!~AMU`*{4Yh0yPwk85Gk76mAG_<#`Dmtoj%1rZfUKDXyNfTg;Q^hgtI0c2v zUoMo5&7W}lrA}u|>I0G_CVThmeh`Yp+$T9_@#-E! zl#QG>?wFb+yee9Si+}-m!KG1QdT7IQ$K9rtF-d}L)Lhk67+Zl8|2nLqYX_cUjd#g8 z+y_lJZ3u5}`lq)qN;3=8kRn@yIivcs=lq#6rGh9Z5s6akTk>tuTpU#8{>XPT$rtOn z^jyq)kF1i(b8Bi22CU7S`IuRQ=eDJ4M`TUptwLAeS|-vfYkP_b_`hOAaI`90{?by) zitB`@=zbQKwgHdm=jqoSo?4qz5kgEFKA6fhrwhS|af@SbRqQ0W;$!Vt5f(uYL&dt3 z;F3dGiu9E;Juf!}u2aSy^zA{l9*XydK5tW*%#1kkJD9_w>~fylCQ>lV3iPQdzby_K zp@skgx^bhPg-G(ek4;WQgf zhg`i~)ITf>yUl19o?e(9>dEcM#I9_;zM;wO)uT!*cGe{~M3m@`=53Bm+m2uyLB?Gk zW(61L&e1(?P2C%|FexL`EYgLNl60Nnb*L`8+~C|D#$F#RZ6W@~&Y(1r&+L$<+J7*? z&#c0;npLRbkv4M%S5A#d=oYDpkO*gOLGx@5fo;-{=zY=ja{G(- z+>~la^x8YW>3V~oQdo~6A8|*Ja^}9>k$mmCYg1;Spbvy#5g?5i#c6eT{7w)UACF1C z;@H4f2+E%LCz!~kB*5Ek=njh8Yoc_Wtw-3L%Fv~}Y~QJvzK^+~k^uoyu)Ag7h_F;Nqh{%!p}gb8y*b6?A1K7d*|ht~7<`j*Dxj zdw=oqWedOlsgT5rXwq-$0)#5nW623I4hAu?^`l&_PCFK?FU=J9LgV-6%^vvs^Eqj0 zQ-=LiV5%cjF)=dDU|hw9(oK+BJF8dJttM3#0F-&A)h?@BjUyr z>Z|s}57PFl1j8JtYMP;GTsqo3m@;ganVXn+SiHWO&q6HNOZ?uHPZdsRC zt?0pF3^C%j2m$=$Kt@1N2JiCONVl=WySp ziO2np(M&OWn>!&&%|}~7FIgprU%k*Cr!8gKn7t&AYt8EOb$N?hH7rs`R*bNrt#U#X zdx$SIPFx=E4rxv5ripn0`%rn7>j)EzOss8xS($>Cbi57l!vb_xWoz3Ww&t7z$>%Rs6>K0aeo-Bds>T|D&rUYB5q-`gQt_4MMw1w zkU0!cEQHgSDdqf8|HBuQsF01}I9j@3lSQzDjT>{f?Ej$_vs0a+uWBc#L{H2sBEF+K zdXIm8?G>wBeZuv2<=^v#X@7_)rG;^+DZAq7 z+tZm}v)XV2+1Errc071SSb`q4*2{6JPR{-GlZzF`qo1>*2Rkh@*iSd2| zV;al5#_S^zZHj*68$(IoO91(zG{9a*6S?rjJ3;R(sFwzo*EtIHvoe(lX|=Q zWsYB`I0_-Pa!@uMWC|BH5G!4v?}DJ>b^w|)DyIyC*T35fI0D-Jn$Aqpc8SKVcT+E^ zEx~e_8(cXCktCOG3fgB!MJY6(N$W@MzQu$Y|n{^ z)fFnYBL|(WF;Y|}rNm`R(`wP0NLq&4Eqx&cI+aWT3y*GC^Rt4e;WIxc&(b;$KZ75) zf#zCB$lce{F#922JWeLY9C$&>wa&kL#TgHgrySXYRSM$31CDLe#N5hW{qF_%FWftRbn%@lr`U-k zl<3B!+zJNilB>f#4Vu;i>x}(|<>so2E3!hOpI^+Odyf2KtELpq1-bqH0R?7zp!$Q3oMQS^Nnxrd3w1dnf0PDZ5wU%>I2JyO+cMD2X1AXTwlJ) z{D+{MjQ6Fuejh!%9!jkdjI)mb&PUN2hf+b|hu5b{56ph~D!J8q9?n`2WuSE{I`nDP zSbSRp1h+DnaIfDk6Zd;xt>WTzc;L*DMqB*kN{z=8sm5X%xJ@I3=R{!$ zR$!^IUniH!=@Fwe)iU7!tqScmRFMEUh7RQ}ya?7P?F6^NVG*B&^QQzla70f0ImK<15flkxa#_n? zz-P;?_*trwB0mc)>+b_Ty}s~)L7P&MwyMv!Xs~#j9XUA}hgmiW&3?87c_og($D!TcV(KRCGsoevqh(4*NEJc`36FlO%Q0K_f7)yo(&#*@2YR66oKD6}G&8_E4n~dw1 zau=1e=dALuDBh#dpCvYDZb$hY)ERn^HM6sgDs6+^JRLI|#*RTIi`&u9#LUEpRw4Zn z=9Ika2{5(wnf@H!w-lV^S66ZWrm$d^)0kb$D;KUe&m1RX=ZEvW_kR7pE;8>vm5wjy ze=6tiAe0g(L3L89@*rxiRZx%OhNurq{gZj8-CoMJ`ZZ)*dVW#=Es&dj2Y+HLB?-go zAk8pjzQnq)e*epE&ZWKe!xLKBuHQWIkrWPnu@o^Sdo2Mn{1sO`CS_aQbu2y{5w$UJ zkUnSLqf_NjKjx#N8&=*+2b_hamFv5WZzWAfGbe-t95nu1G}lh%1zc2)O(FVSNVHUL zQu-4-&m-Xxq-}XC3OkD%caCVr_H}I(M;d$gxqph*jaQ8$mbx3tLrQMty~X~=oU1G; zqAEU+%qK9N+BuvZgOFBAx&kfNzU0LEABVmE(`54Rta5nMaFbR>TuX=~ObzBfi(9mC z;bLhyNNwQksf`_fFB^LM5ef0F*37uJlsk*1n=f0y-UnDBC7%eq^VkiOg6-?a`U5iDXf@=5_9rSgSBHa1NY8f= zGHv6vg4H!O!_iE&!y`XltknCewVe$&uR#`839{F%9|%R4XMPTct3pjHWIj3d;-v?r zr__|lMXgX92lm_DzD_CMKhg~5+V{6S`^5Z8^*LIc{bV#V(-QOg_sb8L2mEJeo+M9= zjejBTRquv3YA{JoPa{SiKFDdR z^?rLC$;Q`^Y6K#s@iJ@(H?6LH!X7yJh#v^URT&A}8nQ%Hp=*CWkg(GH|L6OEwe0y4 bF1fbMmyEkllo$T}S^yePbyZ81twa6~Jrz%k literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/128x128@2x.png b/mac-app/src-tauri/icons/128x128@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..762c11cf60a4a3207b8680feb2244144d799ca6f GIT binary patch literal 8555 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 Q`~RY-C}_%8zOV@SU*aLYW&i*H literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/32x32.png b/mac-app/src-tauri/icons/32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..91421efdb34adfb0434d3b7cc2fdcdca4f00c6fe GIT binary patch literal 1047 zcmV+y1nB#TP)ua|E|=@BFTUmO>|}&d(`Qks_v?ndv7%phuGEAejcy#xDpL_1T=bn1) zbayW?c!`gLm;6it_`d^C_0Om0vDLCmWznz`x27f|vD-5D0s$y-Qmd5_hW90Et#dN? zdl;5zZnO?UJ>L>2r6|%E)#^iZbSy_#{(ZF1TmskakohpUk5cJ6?hKqlv3Lcxoq=UJ zvZv|U&4h@Z$8k*}TexU1x_h?5aXhjG6m^pRwl;?xx|D$c1Ap|Q@5WJbUL{*wQxHu6 za4M4nmaqH_ov*$psg9zUJ}u0dW66ra;TYP937AD-+A(;wvI4-o`K#Kwl_IoQ23gKZ!A*to&P+#Uygzc3FtTaS>-Er2E>tVYl5JJeD@a2p1t}p zVz%4`98D;Mvu%%l8X_Uk*=b|hGEKF`gz@%L2VJk(lm!N#0O`tqApA+|iiTZaOhhd< zUD(cqOUP*8QARDrPX4{e^SE1#L>xr{?R|?%F{7>(s+9~V0pK{(;kI=MnbM*#=E(st zA+??%-&+LmWGA+xF!I142osNSoY*-VT%OWMOyyD&#jA-ZH2`47JAhSBS+=BBQ^AVG z7-!Ce$!6=HQhfJAfWbj(M@_rqq=UF+tJMdot!SmSV72;46wW3=;R85g-&Z(!D!}Jo zR8Xlt!ccHq!KAM4lI z6!|OyeF-Au#;?ECP}rWuJo^3f zS&b`~zai)QDH~%1KsUXtsL5Q*Sy;HH##AWft57Ix#mDQ+oYm`SX z(0c#*y^bedNE9N{_R-N03l=WInl&rLcJbmh^!44OvS{H=lJ?0Rt6KeI!r8D$iz}51 z5pPUvzVDLrj7arlqJE}JDLaTFZbg?I`{QJd*!W-GiaA=Y{nQ_mDFDy<{0$;$zrhzv R(0~8{002ovPDHLkV1l$5{c!*Q literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/64x64.png b/mac-app/src-tauri/icons/64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..2fcab2fddb6f44e45059629cafac73d3ff204a8c GIT binary patch literal 2132 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 literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/Square142x142Logo.png b/mac-app/src-tauri/icons/Square142x142Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7ab2fc80c1c190396bc1ddc9f2f56c49d1e91cc1 GIT binary patch literal 4747 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 literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/Square150x150Logo.png b/mac-app/src-tauri/icons/Square150x150Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b41948ab21fc2675f4139cead83b02f98fec668c GIT binary patch literal 5030 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 YsZ#~#svk!_uQUPVrB$RVBuoPTFJcm{3jhEB literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/Square30x30Logo.png b/mac-app/src-tauri/icons/Square30x30Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3f6f3c18d661e6c509ac8dcd488bd8344d2f5f98 GIT binary patch literal 961 zcmV;y13vtTP)rYiCJcPdY0aNuVzdlB$J6EdPqS{H#M*7d+&SieO>CRRV^O=!BFv! z#uD)V3@jjo^2>_nx%~ULfJ=amlZQ*wn+6i_`2un-#(}DU8PIi$u&o>-(KV>8+lpXl z1-k;%{EEqmUKp8=P^1GoIpF*`un<1jwt+yP0qa{ju)J|Uz1L0C%~2K#lSqy{MPleW z^0_2bHL@VMs3ahKxNT<PlYI+< zR{$2Y(SqM!hh4jG5w%T3^%ROl6|Flp>}m6pV?bAT5iee{olRgda%xQ7DRk z-khryqotfOz2V4eSjF$i7c}hMqv6!a;I!SA%_>5n93DRr2nN&i-h>U!?RfX*Tshx! z11s}I%hk(;#5uLC46SJt6>#XFE-h@kG)JA>0m3W+fTAf)9(sVHrRmCUa%fKt>gu-FHdqL zw6bDPD+@@*j3HU(azG|iI*g-p%jX)jW}2R~nb});D3xGY96Y#X`YET5hdXx*GgOy% z-?^8k+|C9jM{*+-;pYTqQD6yVMY2d7givLKp`bv|dkdF34NOe9m`Z!-ypqN1Hx^ZM zDaR~0Tws&qJ+i7%cD%}nJqgS*m`px}M&iId%~hYu;m*6$2OW4 zLn`?U>GX%PetV0fnxkgzWf?Th&vZx(x^5%hAY@zB)+#hh?+vsTp#KzKlc{Nbqo*NxN-A7`g_k4 z#R;j~fAo=<{e^Pf0!5!k{j#+z}arN45jExQx?S5h@P}OHqRDZoC z4WfQ27IQF+JbjTOvc(L;KqR6QXo#Gv{vse2d#`3CQxw*6r`*rXhF89Q{KY#L130so jbQ}j*y524U&oO=gIQ5J&qqPww00000NkvXXu0mjf>*&1s literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/Square310x310Logo.png b/mac-app/src-tauri/icons/Square310x310Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..21610043fae48ac3a2777f038658d407319e4ddd GIT binary patch literal 10351 zcmdUVWmuG7w>OG}bSOx7m$XB758VhTisaBWq|zZRATWS*gF_<&DAFS_Gz<;H5F*kI zXa4VXJ?A>_`<@Ta`FK9uU)H_$+H2qIUTd%T#p&y+6BE!9U}0eqYig(%Vqray_~*gL z#ZdNOU6oi^+!C59ipBv8`+1LjtWmxP=KwTGTAi9+gR2GO*N=$~ZtDJkPCn+st# zfj|7sfkiho*c_$dPNckJR^B0aAOc-r-#cyAWZ_8ZYT+sU5c&M`qn^$AfKMFoGy!Ce zFUQg$tP>+tON3Eu4^n;aF2FKBIMF!)=VZEQjC}xL^ zg%wMTp<#6Whd@S$g{9z%c>#TZh1H8u{U5^r%k&T7|6}?W;a`&euT}q&^e?7=MF0Ey z|Fi19D*2zH|ErS!68&%Q|35ogEb)7UUCQfc%6Bp{zdt0q1`QTGct7`@o#5B65LYBk zXaVZnV)!iucG~be$h`yPrvtyzBvFtlTZH`Co$Iri6usyZ%%S@M1fnm`OL%gDhgM3e zZ0iJ3cKpTo-N}ZYhrG8iR|(BN4r=|HfWpu_nr@KAL!vIQ?PTYZ^RH`>HBlw4@C4ni{Yh z>O$vOdHEsLMZEk~e)eywV~HlEI)aF}w7iRCtnNct5yMJ*`oexq2U7cYU*2xx~LB*>bo3nI_wUwk!ZFD2oVNT+Y?$NJIP!*6Ol(Z^82UMoA-0 zCxHZ4!TS*7Ce?YJ3G1XXJOOMxYT}Q=a-69YsG_bPa8skKVuM?AMrBq+X8KF`A=<*{ z8tjA|DR4b%Xv0s7m}73)d776^n+Fitn|4$`dObZYiTGuas1hR?f zk#GV?M9WrFNd=jo0T4qQdgU9im$FKE3>_6a+v!vN4e8z9USX;c@${Hq63i)9KFlo% z(*S0E_TK7B*fQ=)=jEL_I%-hLN^5xH%i2&Fg?%r~EG2|~XMuCI_%=K6s8^eIsJRt1 zJ@z;%e#wzk6)%=}GisdOQnNhhWK8s(jgE=Q>;!C=4lr-qM{bdGZ(AUEa3j>{4IZ6A zHE8HQ;wsWE53+C@GxVOE^eIB&SXV{&^wAC}dXUlK*Nis=i~6Vb!J+LY2W3^@0~G!~ zF9?w`2rLqH06T3>d!LusJ9gEoT%*{j{cA31oSg&Xuh!LBUc?eV5{Ti{7E^bO;%_=1 zUng`!qqd~{c@}CV8_lMF`NI}-&X5-5yZcTh(a{5y&^6n(s)d^MbQuOO%*KB`GmJ8= zCdPRY*#wDJ;tW;7jz?KxKD#RL`1-b#!q&0rUZr zfHa4b;80lHFJ~cGI$N{L$yn0(N0^mcQtfuiw7ugC`r^7#?541lpFTHpjaSEMtk{|5 zWOSd8W{8W78`23M99Q_w=NUI{C!ZdaRz6jdE?5;=nB#LV*X>er-v=vHS4@n>pm=(5 z%T%0M_P=Fu7r$E@X}T#I^Ag>sr?Sk-Rc`#NOglp{J^2@V(xcA&CQDJc!h~_cw7L9p=M2{#Xosr#R9CXlI6@1 zi*&uXoL|?or%TKE0cJI@gd$jh(VdKS6@*f#O-xAj4R8C^&*TZK4yLK~1P=1Nv#STO z#2?*1ye}33G`gaygvNXNm}W+HClaE$L9DzLDyfcu=KR1!KiAs^HP6&RqCsLi?2R++ z^|QpcMR{8A%*k)3VIuftp%2Z{U#ptl~HW=H;wMa*3t*X#p-t%_GZE=p_rew zSY{jAea|kiS&FU_x1I5O%zAmo*4kV~nJU_g8_g#^FTfnPJ7RW2d0w&9gHY^HBXVpx zRjh051||o8Td(3eQTXt-0eH`-;JOMi+?%FK(iXgiGTv;f;80ltg4rc68HNtG>4Yvn z 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 XBtMFG25Slf%fr%C)m5oedKLa3F!8^P literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/Square44x44Logo.png b/mac-app/src-tauri/icons/Square44x44Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..aaecba736698efe87838d89fc8fc611fa0a5150f GIT binary patch literal 1427 zcmV;E1#J3>P)9(E6vzMf&70|TKB#ppEhZf(l?vKuss@QJv?jzQ(ExF!DQIHiMk6Z;SX~%V*P1{u zF5L*SGZ-WqQ-~Vb7^E$>N@>B?It=a1bl%tXob#rgc0hU44hYG-~{_pv^ z&rGKu(zt^z6L;8E2d)Fxf$PBk3$QBv>f04qK`BE3wRYu}Ug}dSB+s?>YO(;c7NDM6 zgze_3Z6X{_z%-L0vg;J!*fa37gHWiE?&ylamkrFItfXaS5s#;lZhHpzv^Y8_dp*(qa-Y46_8jjQ1|5mf&r6Nm0XSK<9>+v3A`~M5C>;0MD~& z#5{~aW5P0iZf*)=7rwyxp@VRoJb}j+Oy{No^UED4M@qJ%=g|+5O7+0DX9d(yiU-hQ z{IQ{s?|7c41)P=7WPZV!pZ1X2BcgV-&_=apz{)c0mM0FQx%pvIZkm8xf(xN&Ddh7& zLxYl=+r^@iXAH(;o0>La%aflXk?fR(`_6h(6jr6JR`kNp1lF>yh&>wg&U{{@qa%dp zwnfpg&WE@#=Hbg@MGT*J5Q`~V80qaf2uD`oYIYC<-@izGRw4S| zYvXH3r?-)Ef6F#AY@wj>z$O#>_a<=f8Uu}uO76B+15ZB{!EYlTE{?m1M3ihQ+i)Ve zmL@gG8Bd5k2L(2Qs>`8^qX9b@+bk=~7punGzpJm2&6i;4)!M(g&DXBJDB`iQZS#LE zYX!%y4yh4 z22;iw21<#==Lr3R^BlMqL52 zo$^09N^l>Cw83Fl#xAyFab}7*)g%xja5^p(G8}t#g@Z8op~D4Sy{c)8%Y7UrIH4Ro z#EaES6xP~L*ZKT7Y$~AqFsW-8hsmS4>Z;624A#&9jFXD{-k!yYla}=HE`R%-g}wV{ zG5W`~>dr@=>FFOO+toA<`%c#=B_dZ{tjuC)2I0&$O?GP73K-)HFJUU^xdI=mOa34S8G5$P`#NBLm2t$J(R~6E# zEHAY<1{W?|&(6(F67(tpvC;QZ6dxT(p!-1+Gc&qW2SeKTcbWL${RCdw9VK{Mj!!mK zc|1oo&bF+2*jG6w#rNrf-Sj(1y(t1W(9)u?V|xR&f!E)h!5e#KMD3kBB4}OB)f*qF zQYhp{ar)G5Qux=Z)m_mMiDPFZlA!ACRXnzNI}W_pEMY5?aq#mQTb%5X9+OTaVfoKn z`?5GSa0C~A|Ab5=TY`0O&6#dK=(7!bUJfC1J$iee#k=pkK(%uFl5rCgm(bt;IgTIy ziWWIci;Ca+LulnOU+X!t*Bq(28e6yaqPu&O6gOwjo+Hqcn3}po(IY{9D?jF|+I)fc z&uzACkzMCVb#I{}W6*FoLJsHN4j)p=5yW*Jfo^WTs~pxe1fHMWmfzO6K5$(ZsDHhz h1J{A;z;)oD*FVALm-_=42hacj002ovPDHLkV1ho~wgCVD literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/Square71x71Logo.png b/mac-app/src-tauri/icons/Square71x71Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..92e7fd4ee15c87afaa8f885c9425d9af8653b8a9 GIT binary patch literal 2358 zcmV-63CZ?}P)d!{4 zTKc0^3rHojQl$`}1u6jrgb0a&k{38BNg*+LIIbN#cD#>y+@5pq%-XSc*J~JiH)O6f z+TGb1@4erA=bZ1Hb8RhI(jgI#qQi^WCsLCact{VeM17bB6-z=Yt10F8`vW1xQzPMvxUr~BWba~ZmJR`BK@B#n06LTBRE0u7!!vaw61b z@BR{f|LY`^Y@SxfJx$=~#k$TAmaf={RhR#a7FVZCB?N7%LxU*;#<)1}-mh`^(4+LZ zKKQ-pmti(FwLCN}z_`O`U;O|9^Put}>{!`U#)obGXc+pH2fsH&G4s@*`hHFUv8eTC zV$N*zoP0?|w&LuoF^9|xV8_eATzc6(6md?ga}3P*!9X|;kj;{>q4y>ozON747PNT% ze!LH3a5$2!X#2hj{d@O3q#U(2u^I)3C(b@**^2Mtl1oQ{DfU#EDZ|4OEiDGtT$@B& zn~8=7K@m#gzaMz$eAB`4<32?*5t!9@e`YCwmbZP6?m33{|MPprq$r(qWIl&MaNQ9! zHMQf0FFYQc^-BVi$w=JxH5(f?*szlmuW>1WJ^l9_o_Z#$zUO-;5<>^54YSauXe!Y%jOO}3%9CLKy(1^mUo9E=awbd*V zeaf*?zkcQ-QvoGP${DFrjRgz87%)dvKa?{VoLzGg$sm=QRCt!P%f}f>yOM{LBL;T_ zn#Zd)bA*aYTz25>n!yo5RKx^1<%ckt32Fw{rCVXA7LXF_p8gCps+BeP$kP;r$=c) zSAOKOvZC2AASTHQM384$5maqd)~%Il`6tDy_oHKe#Y`A`UH3<pBWghe z5@T2qGeG5L6lU6o4|@urP{WiP{5@--zCIsa2VC+cqU=4P56tHW3fX(rz|l5tsbctO z%20Yjyihi)C%0$M5qYJeQ^=C-Pv=wyZ<^&zN~aRTWP-gaYyYGr4C9k}oUnAj#c=jL zH8Dwz;3u&z!h_WbG5jAF#tG$KqZGUR}_K9R)}f6XGD7L%GF|E@_7XW;by$db

)d6l^URokJeR|B&*w2X=qn&Avkt9u zPW8MRNnRCADChKnirm~+;`Rx52`Z_nFcW6Y5*R!q@otw}ILG7QK@WZXJ{o6L227a3 zoH_G8btQHM^(3!W>Nz?q=Dt#;VlV{5BKFs%&y8}aG>{-pdllEMG&tQywgr*Os-=34 zr;nu_${&{o;o@MvN{c^f_Z$6JA%0Nm3=f%{WAzhn|!F zBGxoU+I@($HNz9*7A!^gmeI?dF2I>B6R$x`Ti63uDtBM}0&9i!t^A z`}h7rcq)kEMJyT#qzJNOX6s^ zhZkPVWA~o31+~lo-9q23UvC%ktCKx04jsx7YwGE^K; z8?n0MK{B}xeC~RQdwwD)^s|rBDz=Ms&hEV~F-W43x(rvWw$O2fer}G#k3;XwN34BZwK3-k1miFgR6k#SUUV10>wZ4h_@9n@%U(rt1b=l{b6Eb?oap@jQ zvF44Pz?NUVhu)qiag?+SN2REpZ&kn<-Pz?UkSx+6^$pix^XA)d|9y8A0%jPIIDHsf z>v`mnXYiZfK1=GmlkOi-_v?(?JO6ifP23acsovJmP#)J^cMUdex*KcP-awAGh0M&N z?>zMM^kT=3PCWM5U-0_tJIP;JDkadM_%o)TL^b|9n3-hKev{$hVG8Sc%$qkyfz!}X zPYyhT6DLlhx3`Z>CqemFL(n$%Fyr&A=D$vJ)M2O1ekY&j{ee^prJYL*3LhMSeBZ|f zxk)=*ID?c<+Xbi0ps;x%-odWH&@x5F+xrp!??Vhu3{DJAJYsNSaAI&`aAI&`aAI&` ca4wkfe`V86uH>_9Y5)KL07*qoM6N<$f+@<6$N&HU literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/Square89x89Logo.png b/mac-app/src-tauri/icons/Square89x89Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6381da8d310079051164320b1ea33d75df91b66c GIT binary patch literal 2947 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 literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/StoreLogo.png b/mac-app/src-tauri/icons/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..3898e04550d436b5606ddc4d2c90318c3e2129cb GIT binary patch literal 1604 zcmV-K2D|x*P)N zF+7?Wga}qJKnW;<7!n$RmbNS{w0ob+?>YbMY}@UYFuSc(vXe}9cCP0;=X~coXC~0z zzEa>3SOR!NmKu;6kQ$I0kQ$I0kU0oMfubn#ck&`2gpj{;8i=B((s;+o!?JQ@v{iCE z08KNXs=)#%XRZNpBVbu62**Y!(t?J%ClHOc!!Q=ez~u9Hkxt#f*yvScGW~Ro3SEye z9Ks|XJ`hFGC;~Ydfu^PoELr+08k^Q26lx~V>l4yT(0L|uxdiScdT`_VVcZ@%CC|~c z5Mi;av!j~smqA!&62VX$%b(tbMT@sVQ4QEuS{gl-3yN!aAS@$ytN#f8y0jnZbU#I> zt|~AU17Q%RIf?}fR$=w?pCTH2Or{ST&sklFvX`_@GmH_w|gUDnAk|{ykkZX#zc^@C+bNJjmT@ws8V$IsG zDIGhcWBAyA6cL5IW|H^jW5dR8BnZn&%8KNI1bJCt#qt2Qb{bf+M3XGJ+2`P=qdEL> z(LyAm6#2~&(6lf`a~LPP-$FJsC@Y)rSpc;9`h|P^mRO58@XV?`Xo{~R1MZQRT@dVf z2J!M11Mj~VL0g-KSX80vrJ%J{#S0q@iX3qHvPF?_!SMaKScHgY;cyH3`+lJN7{0Ye z^$#K?s}mEOIWZ9gr_Qov0lf2exX2GtsIDGY-h3m3RVxD$u&R#h3*W1ybqnIn8!5%c z3Ys))98qMo;S#Hq@fsW3xy2}MGr>94c;#&m%+}7}G}57>ed%knO?FqYS?pLRxWrEM znnQ&s99ASJya-KsSYh9yHWjg$QUvBj+qTnaXnalzscq-Vv^X;Wgq53bUPp?}V(03_ z_=DKPY^e4CcT}}9`~7sP1{U?I=t1V+b1G1aDkE$kbkbF$g;Jo4d=>VSA{ z$W#siCUxy+&YDH?mo6T;dwMJaB8ur)x|s4Avj)V?Uv9-qiS8L5CB;7Wa~@azwh$=8 zKAos_t=GnnM{-i#r-F5Pm`YurJsshefm;WjC%6@#j_}+Mc72}4sozZ4&Ui|((HyN$ zK1-9}l}jrj#WkNF!RY7}IehsUynIE3Z_Yyz&l9p0FL@9f%#pAt#k#&o-lKb=nU4YEyi2M952cC}M>#TfGWk!XcN`-oo3VpnL3o z{osv%4!cvMPr~~G!d~O?lqWkLinvS)$11NUVtfXX-RT4Xr6gxw=teyT2Tx#d;CMwt zmhY-1WQys9$*zwKj1(WrJjmzWb&5C^{xCoIxZ_N2<8#?NxO{Q1Z<1H8Ba-wXIiB)l z$E}2}hv~nG_3L!(+Z)5~T@gy5$!;&aV8PB0BG~_N3@>gn#9{27ZC*##ZIz7bKK@(>QSM-w9dN^3T_;Kvm@h&<$ zY2u4F$`K%uxPxQIj-#vV5PEyB((J;bSm%o947_nvX7a19_Zldh%@C2ZXl{>rv{`3qz0r0qy}WpFaH8-)y49n)tlr10000 + + + + \ No newline at end of file diff --git a/mac-app/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png b/mac-app/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c825bcb9c40f1ced28147a92165ece1cd7284835 GIT binary patch literal 1492 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 literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png b/mac-app/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..b87964abb2411ea93973efcda6eb267b1b4c3e06 GIT binary patch literal 1713 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 FV1i04&G7&L literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png b/mac-app/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..0eb586bfca9304d9cc6ef3ec3b970e280f457ef2 GIT binary patch literal 3640 zcmZ|S_ct4i_XqHxq&14#qoJy4?G^JeT2Jgzd!$tCy{S!9jUd!`>=;EfN~}<=l~Pr; zrL|Y>sFsF`Rlfc9_s==6d+#~-+&|#HktW7EO!U0;004kVPZw(TXZrkqU8VceGu^C5 z{_HRHpbsp<=f2xV`0#IV#0Br-!eZ*seev%Dcln?38?zjiYtc*SPzAo!(&VTR{H)=D z6}7a)nq^d7tM^D0wX8S6o<2+yHLT$vLBY zxfuOxPIzUp)jh0_QZ<45KHIc)HqsHh*EQxAb;g^Y`#HV9>l!;;|1Wy!JAcs@-1v*y z5cwAs2KpDk{Ka1g5!1g2x%UXv?7oxJIO;kWVggbR5KOk4-ssDttZi+d*KR#l0|Y*< zr?w47L@+dDt+@=g5y`0yp=yRnthb1DTa;VOn$tq_ylcV7s_OX_LiTcciaX@3aDW)W z?S65H?ShZOyN2spLM<=fL~zLWTbno&Y1z{x%BAC&5j>2g%mx45tT1##e9(^aRQd^G zV*Xz9e*b}f%_%~?Okj=69B0b_bGPcz=IJcplsaXR@}p@TeWbI6j^h|9J&2&gqFP0Z z?H(;4qoWJWracXuyRzpN?zT05;&4@0?H!Qsp#suTCJhi4 zehl~(-HwV>4=*yqva!?4Z{TN55ge74ZEE1OskVJ>So5x=ms1N6A?|I#xlD1bMi$dR zotf%$ZWr!i`jRhn1wu3idj@X!Cb@|bFaRsCoGuDw;AuJC1=;ItNa3MDteGw!B7r5h zdEI$scJ`uBM_s>Jm>4?;ix%xdSzS4(Ha!g#{&~N-2i}350im$G1#-8kp;kpn=3SjN&#xj?j4WrGtXdNG*P{W}{%AOaKHkIV@_?7X* zOR$CjUogp{>|g&L=Lwv>t;%VY)i>JM$j_79L{XB08!ElSYCj#X^_hygL^bGazx5V6Uyp+w8y~J3@SG0ih|nRR^Zf2R ztX2Ntu&$uHOhF%+-KuU}7&fHGMj*w=;?I8Qrle6ZfEzQAsb>nGiAIXyaE?=)=JV(t zI#kC_s5QO&tb3jpnB{nRc+-4)vp$!v&t|gg#HN`FTs^9Ylybh{P=8)0DauP zP}N`u%J$}T=A|-&M5?z+z15n`Ds+d7UM(=uF#LrGO;Aw|ad&wx7@O{}9oYASV2B$Y2-9nrH9hgvYno=5vPel9vjT03$sgnyX8t z#Pe{6KQ?yk96zf~0}djkO{S8QW|g0|+Mqmqztq$-e*)^_up9%*rx7j&L%gX$-cOy~ zspZllr8mcer(OnD)H&2$lB;okr(D&NFHC>-BNk|E6s?ClzE}OZiudB?bsJAG^_nca zEcgcH!gTowg}YX7p*8~J2hNnbu$(6>VaU-K^A2$HCiIj3pBu{X3}cUFwv zVoTWOA5XYvMK4F_isd$3*|C^VV=d1TDp>)k`w)L-mZ%<>W;~%1#&hj1`wz7mbd*Zg zhd&@ABTZ5nF*GRgBEQ_>#!9T)K#we2J0U3iz4a5feqqh1G}_?<2Rhd`+}^W;=i&rq zO(T+QSz=b1*`S$tPOL^ee4|lji_|sJs)pK z<4y|*&Xqju{vVqxyuvgv_K>-f+N!CXO1vkX9M%0{1@1X#scVE{6rjh0F+f_bZ9Ya~ zg~WZapVLn79sv6Cf0Msf8P*F! zL%dZG{a*U!W{Z9+#bzam4z;xCKYvu!o3;apS{o5660$uFkzyN}; zALfwgjNwM0_G%uu9>lxz1qB2Z)65(l8u?IHtqruvc?^(MSC!{BHy6d}2r}m4318)+ zTjoMq6lD1)9xm#<&a+f&$QpGRD}loV%moWXaMdWI{ntsFC~8iyZ8`wdo=TaDQd|@! zo^k^eU6(%Ls2T~l&*o0s<&?%jNt&`O5=TXC_!SP~sbFHO$RSiPzbHDlckYblMouR7 zhi~g1+95^Ys7*acgAWnWUH72Pihx%i9Ha~DgLXDs1FhLf zPDiV_+u_>bQoN3`>_S#?FJ9vjTfq{$L5oj4!cUYD;jC&&9FYTmdSz9V&3!fj>OBS- zr#uW0;=f+j^{`K37v$C`%{SHb@eoJjJJcF4pyYwR^U0-g$8Dmi)Sa{vzpTfsbH}LN z*0yIQ74r__1QVcH0T@XEM!bpO)2UMxFYn@yDH@dMBG6f|=rVj~ES`t9rZ6c_5i2q^ zX%PO>|95>T8;)l4qLk^H9u>X36(JRGvOKtmr^Hc^JmRl8tt;6I*j}~mJI=r=UT-Ns zj*g3+L62L<)lCmFZ=Ar|f)Wd*)Tvp-Rl#CsXE&AMJ9Nn@?2I*j)M&z#u` z{ft{qjl1+4dQR0OnO$ic_5B;2tkh3~v?})@&fc`_$})hAUO~f5Fo)L*%Jo@UuB3iS z@+YpJCd*%}lSm|APnpoT-;YvDBUR827CkqqLM${W33lC*Ps+&3e)?M0bXD__Qj%{w1qtC=*hCP^ke~pX6|0I?(iv zC}kNak_T58fTJmh{(dOkBuJ{JYE}^iw*P4g_|_5DPlm0>fd7e@ygS2pE-$|)*+859H+;Pe)D(P78paxF!QXINE;8ncbw~R zPY@p1ZwR-kbuGh+F2#=JQUxHAsrLH~_EvC?e#of-k0Ef*=4d~Am9_p)WvD~2i7}6H z`%{e+2MxiW(+e~V=#N*oZqBtU4|Pj@g3XSxezVd`&2mqyg;X@`FiAQlN!Mpm?PrWW z3UAwugf%(Is09eT(719NZj^pa{Cr(FoJ^5mu%y|O>p7M8p82K*fwZGDI`<}wO05!W z^J1_t0=;|cM4+py4o|z4mxrBB{^Lj{wf2o6)pV|*csP}8l2QEpDqzA+G9ehX$o4*bH|Ol+11DR#8`W&azHFtSShma^1AI-2iM)~hU` zE~~tzo7n6---3@A@-G-t?KQo{`^foCSFE>l&L%IFk5GWLKPelR#yH_NB66#b>W={#PFft%<;in-X$H0+~UU)^=^n-Qvx{SjBo{puNm_}Vk`i=rQEee((Wu7wms}#p=1xeApTX^9FLJjxM`IwT0B=noz^Q4< z^;o_bNTb1!NJxUNe+gVDqTMMuSr!8j)&TOO)h||az;Yr=EH|@Hm&LvSLD);bs{b8} l{v@M6{ztHyQ5L=gCeXBp`t@FG`;!O(dRoR%oF@F~{{gKA=so}d literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png b/mac-app/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..efd62974542093b8faa351f7d57c5ad4735a1566 GIT binary patch literal 1691 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 literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png b/mac-app/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..62ed11ec8b237ead8d20e6f474ece1f982e73c35 GIT binary patch literal 7223 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 TcV+*$C4jPmhJ2NrW$1qZtvnTd literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png b/mac-app/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..ce6894bd2c9d18427092d361777a8406eb920390 GIT binary patch literal 10836 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 literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png b/mac-app/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..0488d0050b170a1ce0733b02cae452686d1b5008 GIT binary patch literal 5460 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 literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png b/mac-app/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..8785595a13c6d0e6562aecdeaf532bf5729a361f GIT binary patch literal 6443 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 K64hcRq5lQB(Om=p literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png b/mac-app/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..e53708ad031be67bb38d40047dc1f29c1d9ecaba GIT binary patch literal 14503 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 j^qAJk*bj}`|{raPc1r7 literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png b/mac-app/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..ff15b39aae29745544e3e24a0a69eb90383105bc GIT binary patch literal 7422 zcmai(RZtwjvW6E}+!hHg8z8t#a9A9IJ0ZBcLvWVhuE7beK{h~ecXx*bNpKIk=;fTJ zd!O#Z%v9I^_e0mrRCU)ErKTc>jX{P1006KRt zD)^Sr6~lj^z&~6|38b}R;$Y4iiQxc|H1n(uJvIOQ?xbTi_j}vr?}s+)&n2QB9#fMZ zU0rr|x~rK7f}Ll-A`smEhTf6ska&u>PzpgwfS}u#01r4? z=?(Au8rY6zMr+ZCoLY{FnEzb>{4^9m(-KA~3EAAsij2x&gw71pH zrjZ}rdX*3jyEz!f=@OAi-5^93kyq&i8f^KPcRQh(z*eZSN`?Yh3`%i*&e!>UrHh-hR8 zJ#wAGeVrWXs6$DR%Mg0$o)k3dp;q12J-j@TBdj)Pi+WXL`0scM+S}2cFE4IM)ii`K zgN+eqY~K7Hr8rPA{(@7=2R!iL7n8$CmU86eoyQ45iYVv`5`PZFnyp}OS0#%AnM&G_ z;Um^25TfU%ooir5q6pNQ*VF0JV~lzNi!DpxLD)qUmG(puj=${6t2-!|nTe%nW}uK- zK%ECkVcL%T4eN`=x)8o-=>o*o)_jt1dua2;x;_N$S#x@+iMX|`NkVteYX58vDN_j- zDX#&;7Tq`2-fSe31{-8>;4Hiw*)uDaO=)&cKI2wiWfN|Tz0`X}dW3hCF3GDi`FYAp z)1P`4tM8_B*9ONiHsSZAEs(hXO7-1^d6l5YUqkwo(BR-FmpXF-50Ccv{$*^^d5Wu5 znk0?)Us+kkYI%lPHrr< zjV4B{H*;Zf&WalTQ!l;|ma~K}vt5823}K-0@^lLRGi3B7h2eMTT!`E<9SuQ@fNY?Q znu3}O5RK~Y>pa7OeU=oX&%=y#CN__?5w1I#c>L}pMp|R$IN&8$i8gr=fR{(1#U_XL zZp$&yamMD|i?gvY3x)8#B3<7Y=X4kDOPa~$SR;>MguXl&D8NyniZ7BWG62cqdoYLP zAIxF--!IP|P^H175iQAfc$j%8blyP;;AUK@_wwD(ow%Fl1$&#r1=x41!eFY}y{SV~x3OmO?|dpULW#eF1#dZ)VaMwUx+xGsUo$LbU^sqcSmrK^iDJqxa6f z;I!t}WaGEB90o*>JlbIObf@PQi-V1V`7Q#-NBv=wSTXY(L05P) z(xc>Nhka$mQmV@JxqVf22V$iThs3rKQgvHi@3ft;J<<-bp6PPZH)?DU*6WSGZx6QW zQz)-A0FLPd#uW({qcaj#v@d4gL&rTopKHJ#GHa_>k6-@FO_Q==}HMuTY{?W=Z->52A6 zNZ3T4TzyS??!IZ43@@blwx8xso3t0eYy2sDJ!Kn|PL99LT*Ah2BoS8O^8aMxQMY zqNv-O0Wuq14tb4Jv8s1hu?Gj4Ugqk#ED9R99kQdI_5g-C%&X-ORie+oe{ZDwOM{7A zqP)h5`8mJf_Cp+h(q}& zPhzZ5?&4aDNG*_7Tp!G1D64mPSJ58K-OfC6ecMvQwsY>wa$&{=?U6`5RKO%Mw(D;7 z;@mT;?MZrQTwY_bV{+?w#yQKIUW zZWbI7hH@h;*BT$265!FRsq%+5Xi)t^_}Vvl+^Dk+B1ZODvs?!MD&pyhm4u( zj&Jwp*48dEq=P9ARQWEoW|g#awU!5?IH;q0&>jtcy*FqQ8{BlZnI^rX`!SMfIc=X} z{MGvaKU7|3N?p68NAz=gH)RvU`PfhQ+si(}tT1IUcXH>RsVWx29em%!9#v!T!oNh{ zvT|H)&&uA$$RSf1%NzeITCTfCYel^eZQV=PF=M3D?jXGVJvRQKt(4DnF!kR$a3HQi zK7I(3)4sD^CpkHMuV89sOuZf)A$z^K`a;&krNKbVSFa{2{*~A7U>T2-Npdc3)3}L! zbh9jo;Lej$MEP5b*UL~6P#V~3MYru4xoomgUg?XT72Wjx2fG1FF{)Q;A(h2Jp64n_ zMM_N8N7iH)Dup28N2LAo$vooVw$m%rNAsl3-Ry0cS6q*NM9o32X4Ur=X+8e=Wp5TO zU5>qIy{~kH*lHHeW7~`<*XJ7Kw4QG2MUlFPIgoFBZ|)0Pjk&zKH{GFmzEy}vFD-J@BQv~Ow*Fz3z>ThJa;#FGw_3{LJIr1Qi1NM0xm^r z^ufsRx`3ogk7y#P_eH6Zrl(z&G5{wQC$~{_urxY8Q()2ZeOCONH|a3y5@ao%!=8qh zg=uCo!|n7d)dDrv0nlFS_oAG;ZG9>>>c3Q-lloW*Dnm8|Ve%c9s1DYv$acYXD*|Wx ztp>BO3^&BRXkF3B*$qm48F#<={PNhc**r8CGKr!)zX z9Hw&_Oue)bgivX-a81^-D0HnmKJji93T20)0&U(VIYHOPvdyBhPp$LNL*^I9mkSEB z*4^X*6o&C~rQWus%{#<>fUYjbfNR3{Wn35%3C==@?uzNfk~H=S?~k|>U0ebopcvw( zkD1|Kck}$oV(d$JGsK=~GjiM|4G^;F@gUfVI}$&6zo!ho@qHp< z%FZ5H&B?8{#mmK6z0G{nXlk_=JhexG@WhgkCH0aAv^9FG`Lfg1tRF!D>j; zk#1SDRVWLx?YCSG+TRR}YW7OPTn&u-nUcyY=Vd+fe1y&Al^bjFysk+Jss@0}-R7=r zm=k+bUybht6~9AsB)b|wy3uAYyq00wLm5m!MuUfqzZ0wtIbU`!A9N70LAs^I z^RZ(7d~ofHvqTxgoer^hPK^67N#@C0(fkvu^KuYN1DnTk|I^1Dbz($96GWvyVIB=B ziW37xyon?H&OjQ8Faycq;xDScjNKl0S{>KSrx*U?>s7$xHPZei-;ehGae7K^b4&z`Y8#fAklOk7puVO$!*2+Ou`FdD zbDd~MwPZrYx|wEqnb@g5lQsIAlfN0r9h_>4kt&d2iowz2D=!&*fFEbhepZF9{S?NO zOUQHx)bmjiZ8j%vYh|;s9f{3iJXvx=UWCmPkMrsD1jkWT*@BoTPJX>NTS(Z|T*@Si znw>H2X}qnsu9g}_Mc6-Hl^NqzI#uCO?ux*YbG`3plDED``uRZtSASu9TFuW$GUe(z zg~rbn|Ug*nYk ze_qaTcjt;3c>O_$IPL18_4Lx&pB9@p)6O*^OrmwdZ21*Z9xpPW{hU8kx&J$a5&VNj4SsEB)IT?4b$Wm`6Y@$8)A zMF_1-h>b2+zu>Ux;LoBSHV##o1R*<}-s=;G(JGB(ot`>QW0uvG4d1RvlMv z7>!O7-Fd%ABF0?pEtKN|RcOZzzg%7EW!Ug+l^B{%?o z^(TX3Y)6+cr*;-Am7=P6IrN&Uq)X6G-Bhyl93ArhCWAjwV_j6vjp@po>|h`fjq{U? zTiYS}j@ue|x&DnD*_vQGv)tO0$a1f|a8L5F{0OIxFe6!*_A(=IO8$Hjgf`!4BI<&@ zo;AtbTJ*=0>R3oydHsO5np;CUzqjQD?vs3pJTJwm?jJPwiS%wpHTn2lNB2k|N@4(h z$>HNzc29tLx@tuJ!%$O}mZ+IL-__mUc*E%mxzVINF{}Afd}2Hfgy%itR4YqhGl)e= zR(fFlW~!x&VA*rEMK zE*CWNT`c7N%=lShuT4X0&&FC?N=o#=%}Oqd5mFmtHXRWhX(*v1*6SFxnIk_Lb$7J6 zf22Fl^dL{^raMWBBcD3OB9FPeJ`HhAR=M8ZMs^zVA|~L!FPI-s{|{S>uPDcrR@`Qf zTo&Daa&q!>F8B*m_I8ZhM-=OD0>+W|5Po{MVPX)XlE`x+@6JImt;>FQJ!FhC^^yh1 zC?pQP4Krip$UKGy_~mWM;8x13$a5~b;pKji<6I2d><*Gp{frst^;5?7{Wn~dYtH3{ z3vbZ}M7j9(?#W!NNy<;=$ya4q_dQSI0~_CSr+-kMwm>9oQp=hY_}E^DJIRs8zK{8) zh8`__-uzu-tnHmO(eU)bQiljb;XD_L4Qa--*!`_YhvJzZQkrNFVNFf`A=$#^{kM`z zZ~w8BAG#N2Q-Auy(8hkvU_9-4veiCPldD=-+wdmu`{W9Y^f5Bi_3e%JMVumC5O}0? zT7mU=wc~Qb1U@R~Q+5tlNyz^P%|49o8Y@m*l?1XyrMAAex84)(|xnT9|FaDu> zHN33#TbOc^DZeB+rA#cze2eA9JPHTBOf#R1mR=LgR$8#mYY@iXz8FP7G{q{~#9B9~ z@hwzx?PAGfDV_lwt*^22wDpnW4Gp3|N*ot8s7HD#KFztX_}gm>xDE~IXQ0ep`UZ;B z8fm$zLlbc^Ce`(prLhhP^}Wb@I-_&&7oD)2+LMGPK^F$^$QO_&UR%_zdyRt(&3&c0 z-R+hSV3=b|zH5P9DPx(eFk2wq#X-#P)*aJ$ z_oa0zWA=IVnr?+innpJ3;=@7_1}iAEt`go^P8ofw;S!o$Y&Xm_9FdhO0;zg2MoW^ z?!sxKhx^@r4$3oix|Jj$wfKqNW?}h@%yWoj!vA~-WF`*U!!;hH&j~3oVzD>CT8q}i z#1al7BptOvF}ZBR?R_0&`^G;~4-63h>ND@2;*_yr6%s6DP+e6sl*t!s>rH{IEt3SZ z)W-H6)modZ@-9qhCr_KcAP~H7<BwI>CAg9{xd)yWzetgQz-SD_DE z<#mody&brbw)?c+#y^%%F|`gZT)&9|9J++@_|VLDKj6fiN( zF`-w*Bi?o-+@7ep1+i%>m+tZ=_an-YUJ>Y5;@>M2%F`D&rjV|#sof#GNP9b&aMcHM zRG+_bvJ{Kk8^ggRL%2AV_5oYpG@2cvxDKSzv*dVrdAa`;k7gZ+O2eAtD1tCNodO>M zb8MD~?`WFbMTzZ(CGU*4Qfklv^w&IO4vy ze_rCJXflzt&lmw8Uk7AL^OpGb#W2xBSWATi(c_inux06Sltcur1HLuG>Q0bh2`lfmC+J>3S5 zu@acxs7aR21z@GN#5F-QFMp|NcZ3p4>sg6g47?4APEqWQx|UvOnd0x zTKr&~>J=0wx)N5rVf?2VqkLI!bqKRj2j(e`$)pb=b@@#op(=ZCk4Rkcxup1g$=T$t z*(*!7syr<2eNV#?CaN9IucuHGQ>{jX7`vuXF&;{HGmw@(6*35K`t#8KW}+|?jhn1% zIpQ+V!~3ql4uxajuxREYX4yc~w$3-#y``1~evqXa_?_4qt)!r_hN5d6f1X)%eO&VT z(O@=~9`p|WMSo2b1Vp1jUoQdKP3v&1%`YsBncl2tn=BraU)+A2UiljQbu41jnJThq zKCZB(Fz-#N2*LVkm6~I0k6sJ%`n`o_;lbob@7)Ng^VLCt`Gr9)p@pz_B(=Tj4(7!w z>~>ZKzJbYi5^)!PGkG*XfwGFZ%CFpU=0p`eorT-@IT!Af0uAW_Hn%_=|D(kEqbIr{>~6OVeITe6W-jsX#2tW^JAr%4MLg z1Ri*q4kl=(ltfckr0gC!Q9L_Ks%9L7oSOQKzJ6Xt9gfIF1zSyOP``384qua%IVRbYYgq_S(1~4?UoiE83 z+pL+|ggyNf|#OGJ>Skm-R)D&sqY(>>=-_nNnxD?#8W8p%GNA)MMa7+2vEahP%H8 zu-uFNzE#>xrJgy}7eMFJiM5NJ2Y;3cy7iTxMZZ0oYD`&r$AKiER!lYvBC$5Fet3JM z5o$xf?t3(GUZEO*n3c6l%T>5{9ZQOJ(eN`DicKDfFeUaN($IJ+vzdN*x!ibi2iiKe zXSYENO$Tz)B!GHcEHI*`6J`oOu*QB08>zn5n`yz?oyv>pltLF8<+>p-h!BYTeL1a$ zA5STav(|JLzVUR5?R`|;#P#+w27j-bf(+9Gf~mNXDm@e&PpaQcoq^ZRl&*~OyOOGe-vfFT64~D&9UYx>bF{nBP{g+oE)YbX^SD2m zP1S^65|o&tcPv#5mTac9u^39Rm1;^(2Fm&EJCm;WefT>Kgm+Gq{JTzhgO5efgDjLO zCylZ67;NydKKibi|MuDKk#f{(SS~wZxZ*txnMEP}u!^@hLf~(Pr5K__0ZY+UI&wrJh*Jyr4SW9F@kpz2n-{ilz_aNCDArt&1kPk4_sUff?*>39Y$Drt>^!c!BBwPU$j@{Kj@HW3m!z0 XL-RG@kFMJ**90iYs7TjHntb^mC>k3t literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/android/values/ic_launcher_background.xml b/mac-app/src-tauri/icons/android/values/ic_launcher_background.xml new file mode 100644 index 0000000..ea9c223 --- /dev/null +++ b/mac-app/src-tauri/icons/android/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #fff + \ No newline at end of file diff --git a/mac-app/src-tauri/icons/icon.icns b/mac-app/src-tauri/icons/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..f9bc8a12671985e51867fbdac4a0fd27e2c95973 GIT binary patch literal 67475 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 literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/icon.ico b/mac-app/src-tauri/icons/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..54c618a275268373a8fecab6a41bb3a8e4d4798f GIT binary patch literal 15296 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 BI3EB2 literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/ios/AppIcon-20x20@1x.png b/mac-app/src-tauri/icons/ios/AppIcon-20x20@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..f19de8729477a2a229ffa18376b457914e7ec849 GIT binary patch literal 640 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 VocRTtpQZo+002ovPDHLkV1nZ`wLSm< literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/ios/AppIcon-29x29@2x-1.png b/mac-app/src-tauri/icons/ios/AppIcon-29x29@2x-1.png new file mode 100644 index 0000000000000000000000000000000000000000..cfc178077643c16af89650ec04126afd109283c9 GIT binary patch literal 1916 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�O(hy-?A+Sut-n4*nN%kkRyhAjH#n?#eCiK^rGsu-y6j1s zHvJyXs;=av0sxC;p5yH+Un--AzfeZgrkQMIL#;E!v{291yk>QnxzwUVhqJsI_{&)N zdDym7JW11dn=bT#FfGU!*bFlB01kYoi_8d)1POw#3voI2!B0nN z#qu!INB-zQ9GgXQ+@eJxdgP%PFL|e6Bmt_j?KI7s{}_c>uL#nynZY@+9!Y7Dc`2SX z^U^^oMReP2i$1_@#^Xc%z6W| zT%`d(EAW$TnS4k(?a;b)D!#&UH;PEoyl`wI1DwtIbF_#cW;K3NcvmGI69QaAWJ6K6 zScHLAP$)^Tc`o4bmn>GCTx_!DSt_E6s!Bs9r;tBD{99AIOhUw5E-|VZVqoB^3r~q` zDC(AQnvs_h00!dKx?0nno{^1s+@R_z!DCWl!vJu7 z6_vM1I;^rdV?2Ya97QBrClv$;-G*Thl}>+`&GCJ$$nJu>R&%uJ080%uF9_Gl3zraF z&vJ{1#Zh;IG1vj<3<1!B?G_UwMdj@V-S|9sMGOBQ>qyoH5l2-tjPdT!97%IgO!Vc@ zT#n3S9FBEwfNRNnkNio*_2O}HXpS>6;#?)=`LhJa&Bl6qSxRiThk#Y=xZL5;)vJ!Y zpWldqq!5}dE^8UfI2VGAU4(-$4JC*-H)lo!u9u-5J(?AL!ZM4CZd6&{9QAO_9Br{i zWJXq=1~Rk47mN%o7BlE?`!k{q__sWDoTrHGdn3(Zl_BrvKjBHbZ_E{(Xhc#p|Bc{_%w*ooUH&Xytcely5*?57%l+H;*&kX(1#^ z6FOm3=41O_+Lf#ey#ALo{pqDtzto6ScKCPpbYHvXf!mNu-9&|Pc7G_~IBuSi_JY|}puWa!N| zGt_c6C&w4-2o>KZn2PpKByB-uJ!pzU@76%3R-6TcBCcFzqK9 zh=Dp9)P8gudX3HFW2pXxlgGCO7A2IR`kNC$1Z|w?HZ0UaG`JVc96_1K&$;;gFe`Rg zQ7va)47}?m&~_%Z1f$Z%SyOwvG{wQ1hi5}r-hByYhyg`7w6Y9;)Pa7N3VKtoiVh)Z2TStu`KbuUO!Xcpg2V z`K{^gCsengL<1TAvX+Eb0O)b#>Pc(OqNn5^K zG2}D1e6NQtT(I3}LIDe>dZg+5OjCPZipt#_Eu>PN;4jqL`m&f4x((q}KoJ&KCA+&F z0i&^zMIWZ+FkclChqqYBK?7b>bC!B}=_eBkXjnBS0_Wj4BGq|=6>y0=AiKJ3d2HJ` zSvjy+0DJnq=Sv1`N$=)S0M|(a9NIVma79HUgVM!H7}2qJvI4H@RuWdO2-5@iN9n~~ zDSB;Bns)C|DR0gV!EoG1?~TyLyCXv?!2kMpjx}8*7vTH2a4e{xlom^+=yJSXYK-Lx zQRn=*-O_DXQ~M!tENvH)bPqS*fm1!OmM#s^+_@I3R;s1}Ym8T$!m*$KT#WAjM6{oK zalB#J^sDW?EWAhg{(s+;@(ee>(9x#8Jzc{D4bxMi6`LMtUXI+75CLWf%xEnj9UE$crnE5feV zS!4E>kPy~w-MWK*`Sh!l=zEu+_wwtN67t=`cTisM-e25$nq)PskJ~{P(W8$(O!wXQ z5t=ot;hN*mpKqhRd-u_{ZNH(WrXy5c9h2n`OCPuin>4t?byiqrUtb?@37R~463v@8 zha-uZ9063wzLu6&I&tC@wY9agQ;c!cQ6aoLR?C0FfIFZU7~<429QY=aDgK{v3!sMZ zY%CV#2mslhBZ&g(-&-g~&vo1+z+}rTA5x|V$k?*k9FhJpiyISv#@mln=-;@};A(L7 z(BNutHMn|ca5cCZTs<_n8eBazxEfpyt{xg(4Xy@P51-?I)pA=~dOw2X00000NkvXX Hu0mjfqUfVw literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/ios/AppIcon-40x40@1x.png b/mac-app/src-tauri/icons/ios/AppIcon-40x40@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..df9a88bd33fef61100e97d3386648ab4f5983326 GIT binary patch literal 1307 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 literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/ios/AppIcon-40x40@2x.png b/mac-app/src-tauri/icons/ios/AppIcon-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..80dd589006a75c7308f49e70cc10059bc1e6e322 GIT binary patch literal 2630 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 literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/ios/AppIcon-40x40@3x.png b/mac-app/src-tauri/icons/ios/AppIcon-40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..5b2bbd9ef93181107819b1add4429ca81a408d75 GIT binary patch literal 4001 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 GMExIb{gNjD literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/ios/AppIcon-512@2x.png b/mac-app/src-tauri/icons/ios/AppIcon-512@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..16b86a4589a24246186b0f33db6ef7c59bd284f1 GIT binary patch literal 8009 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 GMExIb{gNjD literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/ios/AppIcon-60x60@3x.png b/mac-app/src-tauri/icons/ios/AppIcon-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..e98986ae691ce42fc83af2137ea5c305de2b6970 GIT binary patch literal 6089 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 literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/ios/AppIcon-76x76@1x.png b/mac-app/src-tauri/icons/ios/AppIcon-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..1939bb8e0f332b55ae3736ae1bb9a3e3ae658657 GIT binary patch literal 2477 zcmV;e2~zfnP)701uqc70zvRubYkwqv(}64mLAq_t?%Do6;@G*zL3NQlxGsKg`BC6}t=fkFi@ zfGY98MM5PiNGYNLM2i#wQJW@inkG&hJ8^Iu(qw(vwRi2EnUC{7GkZzmT~F%S_`-}d z8t?3UyWjlg+|Rc*J34w5MO)y_j1WY?B481)2v`Ix+9F^Pun1TLECLp75wHkY1S|p; z0Sk50Zg{OCVAtW%^a3QM9NCMIG#3Jd2JZA{vMaB96s;Z z8NOypuGMu*-q$q42d7p(Fx)Hv<#JPGnhn&_(n~F^_faD8S*ojRCo7f^DA-&lOS8EN z%1n>a#KajIyY?<0KcLy!F&AL8F%r(e(5svaH4uiCZDSa6?c%T{oz+YY%nz zJVSN$8${9op?I@U)$5JEQmP<9fTkNYWUypqG9S@}q2JQ*(68k)Ag!MLTjsz3D>pkq zjfqXvyJa7>uHHs=4t6Wc@8%79@XdqkiaMHBJ&h&%>16*tImTkmRfkqpV1NaCv##xn zwB_Cx`Gyjrk~n{J_)t1752qqJR$+&sHL`?d1=^*N*Z4bHstQf7HmnUDPtgNgf69iu zhGC_|9?b;{kaT}Gw(adQLA?m@CQqxId|g`9_}=?}NE>^;Dc|WmkYxlcuZEDUd+z%I zOTY}PV6NQn= zLw}l~SAU1jn@d%C6o z%W*vEDc$qucI}MQx1On`Y*v-AX@2;UOH*^pX6nAS*_EiJ55o|N}dyv1uq?otrD9WmXzsXNf#!V zNPI?e!%9yTzz}1#uh#tdRR>9= zE4Xsahg4hp32wkARv4>QzF5~|?5Q6JRl>|LZ5T>4s5%6Zl7)DB74RX#OhD>UM++;o z(8ID{s9~X=g%VAeUTFa(N(q{4YuiGtWawc`4Jrs=DE@g-y>{!R`vp|}%Uy)ISXPrC z@jIbB$dGK9lCmC}wE^fWeN<@Z7RXDXdUl9LBK@8WvuCT~!2TvD3PI z*`>GNu?zLD`8LP5*(dsKx;Wx+BtO4|dAV&$su*FFdqNCcGt%Ah3WRE2DMQua;A>ea z?U-g|Xn=*BGM6Lz-K$wLjrpYu4^8I+BWnL%k@@mtOku zl$3Y?O)3;~Tnku$_M?}lXmm7~ba|3*QfgwrPt}%Gq^~46MBgxIvWvVB5&PhIhrYjW ziu&KPy(Iev4~lcA&)9rTnogdwIo7L`c;9Hha{N$^g(h89DIoSe{2R_EH;GLP0xn;k zwrxc{-3C4PojO|gDQ{dd>C(@Bk)bmKHeaWSWCererA1K3Bmeli{}7jyN*0TUXtJVj zNE9q=0Du^)CnN`+)3Mcc>Ue(05qlRL78L^N%OC!gJ@Lm&FEz?f5{WlD(s;7EKvRJO zQNREgNK&yFNK{kf8F<&d6|Zed_vq5dAEa9q^x@s+imMVxXy2nFjV3GlhPMWNE(uh( zoYz{hMjE+zkR~SwLXGl6ujxa|u+{??lK?JniMr1Gns8Rn;uLsPz! zQT*NeMJ2S7clkyyL0dc_bW zp++)!oUUCx%97PfiRMm@zGtbe&1E&SBw$6$ZQE9hvaD`MtdmJ4K(RfD<68V&JVZ9(kEB z*>t4b($v(=O9^(<_U$|Ah5bDeCfK&ic8kHq^b+T-1QfiXX?j3kc<~|~KKy4&Ui~AD zj}M50@jS6Zw361imad*gxS>>rk1e!$^F4Inz_+Qd@4<>Aj~_ol&p-cjI(F1Eb(Kg}GC5A~zkixufBi5^)tjt( z8ER}qFltJ=qZXk?tu6L{M!`a1NJ%P{W{GpyxYr95KuxF9avt$pQ&XcH9mieNUx#Q* z5H%J%JzdQaB{ymmXMj-ks--qdSkJ6(LRv;U&-w!|6lUgBs9)t>o zg&VQom&!FxOB)qREG(4*2=m~0`u@Uco`a$FvnlIbRkdf(;U0l+@PHw2&mUrUx2>9{Okf2s%IF;1%0 z*N@mw{m7UR_job;e6&KpBZJ%)ZE*~e#bAjY$Q@;fD>s8iUxp+6*bMPd< z(%-58(j@vDVvwCPUoX|vS9_)$a=Yqs@0);Y9i1doIn$r?7UL|Y1_&g6v>G%q9vMES ztsllZ%X*2G(2DF=Whym#9#~MJbr)%0(-VElfBp&w<5<4*OYniYB+!RC-z6kHnISk% zOUV6CNZJry*h0t`Yy&G}?q0waE-Z77P56k_qJmRTh7)d3JZWZnnwaL3pcS}CfJw2@ zB(3-TbzssGa@0H%d`+~V0O)Zv6Rjl$Gv&T4j+ojT5=&`4WtgXRAQ-+zPK<;G^l;_6u@MR(Yb=4@ak>>G7yBL=s1if+lPYZi= zOXt-NL8H->6BW28ia_8)epwsX+Zz>EIt{LmzvY21^ZLxkXJAxN6Sq80>t~H-E7fSJ ztFZ0d{;&0v+#$@=cqhG8eBWLvJ5j*6S6g*c**u4uDz|(GQ(UTcx29_JBN#;?o@e3Y zrr=|QsV+btkTC+49z5xeM?Zhah~;dBMcuE$z&?>0q%4gZf@3l#_1Rw9zAoX$W@o^= zo1zSvkbrfRY^z1$QT1@Thbx3=ZO9#H3%$P*;eehn+_lr|Xs0ND3Bs9RPhStClEriJ zS)B4d7#2eajFJ3lo`d8Ol=k_2h(72bfO1h)v|W_>krE%G>oQ`YJmNf0Ns{r7=?(4nUN{E?AI%UF!LbZ z!O3=gnO^)cEkqMO9icgf*Dd5V_ErYPQ*B`p&AY|n#!m5hd5nW`!>-54IGrtvut_a+ z-PqeM?S4a>eXK`g^j~<>!R(LkOm&|HT1!k znWc_c8PA6gN1qStzDPYOrserqPUb79bx<=avsvy)TX?>deP@aV`0|BO>Q5Bm-JIR6 zBp7r)X%7M7Gvg%2u^dg>V$LUmP8t6!&x_=+GqUAHB)Lg)G>#~+n2_a;)=?lBjmYp# zS>d}eA$?aUtE!Nb;<_G6dmdQ<+QSGG9y8W>#%K0D?v&Y#6}N-j(eB<qD=Gr8uf9iKxY@er=SD^r#BM{l9Tsg|C+7MW!ae`zOV3dl=7&fIcpk}!C-_cdT@ zW`LP}v_S(`Syap_KOq;7XVUzef?^Xhe9vmBwe63$Q3RtuSg)zLZ&FbHNp#&^U~YxB z5GMq5BM^S}eW@uG2KC@yh=R>K2?$*vrEa=Xw-YsHz=_7D??Jz7WeQ3-^+uktzVV)tQH!)= z23#gfq|vAD@R&$Q^3F|lWQ*JYVVehW-gB`uN2#w0^)W@VtchZIoK}n}wi8;Dbvch# zF9b_&38g2Aen%_dUf&=D{;b1gOE!KB9ql-But&bkpnWj~T#JuYXQ>LoE~o_`k&bFb+JD>Fc$SXW3eVnr-~7jd45iQ@sZk$C zE>;#p7tQyf6xPuTBip)lZ44IR=~*iso}<}>^)@sDmH<3;AU3Y=P!lS3@RD248xBjz zwg!(1EBSf6JKMH>BtE~4=@IRcaIlI%SIUNy-;V*!s&1XkQ87nBq2LSZLb35}g)F-6 zu2o{pc$WcnAO7dMxe4mp(&*^+nqDPuyVIsvDz)G&DB8(S7=1Q7@1^d{-S-wMm~?N- z1)+jQ!j&tW=$|xi7{6XH4;gA=6 zab{&+zv9-39FV#ZjUAVF7Ul}eTW26dx3rv{t2Tr+oajgE z{5TzQE%4rb0u}k@hF!u31{8u5$+5I8M^NMjjwjTK2Rt3xxf8RuM#)r^J5#RSTDOE! z0vYqW!S_ga2-=Q{c+h?L$oE%oo=aWp@YO;@}eda{pPttmPtVXnFCk|-4FkH z`h)!`_NgP1hRL!t=t*g#F z3I$%EuFFhc7jf_SPS7(1E_%XEU1i`iYr5j-{K8vXQ_o&-0bBgz=!Al;_!7)rcULG? z(s#{rwE8#xcDtwyVHP76P1nLuRTe8BP|c&~xV9LDb!(z`edC3`dr?`}tkZ9N8Y9f{RpUQa}Uy5I0dmkU-Qi68UHc4fJIDf~3y zv9^L=Uq0`O z7TbMANmS{*(I5NM(Qz>-3T3Hi{Pr=iA2B0Hm>K_OpMfHD4T}`sWx^pM<&jrA9p8Hz zu$wBsU-0uo@Y|tOqMKp?6EB&AU*ezzzZ!H63)EK;6i2<4PxEKs`2F_HmzI0#b~)r# zj6+KiRBJ66kZ0)A{riyd=YEX((+;y5>wK`jeSOYIeuBm{#G$X4oxuz2=5etU!zyBq zBPMuI>c1y*?XVBW4oapg;W10&3A?ab_F{Hl`Fg9Sb!%qmUp!O->x`^N2X8+w?=>%@ zsfW16SiNVD_A6PSZ89n4;Uj9%e;XmEoGf;}Z0Em+q$6($^h?X+f!iY!BYC`q%ff~^ zi80P0-LlZl9LV^S_Hx zKedC=%F4;&2(-?mDK&q``I7cEE}uQGR|zBh(DtcKkhjHe1+9(NCfY5mDOmVAv)qz9&@y@p$k#Va{l6Xwpx<0l_$d z{%i_~RC0|?Alm)DaqS&C%H5O>;%P1}?$dbpd*4Hb|22wG&~{gYPgHj@QOK_rMSnI@Gle@#}%`XdBF?EgYK! z;Ny--@x$?whOgYjV-vn&OD7VPWtipzN4HUpEZmA>{q{=sO*UjqA5wC`rgwEPFvhDw zTt>XoZ6(s~Zo)DWJzTk3HZ&l4{hrQq^&)hd5@+TvU+<77%RZ8DEXWS02LGkFbBc}T|nZJxPK5{Wl z3#%EEjrm<3`tGV~HPdj0jBqa+e0&!19x;)3TdLe7s8n$)#)r|#O=%8D(OeC#$x88S z#}9?vcIVpP1cb;}qVHp%Cz^HNJ`CHI!+FAqe16V+GEBdtbZXRZd^XAOf^qFCeU=#j zWL^(DdNTcfX(Uoy{-w+on(Yr`b9DFxxt!G2tAdDUh+Ph%M@qaS9%=VSSKm?edYRJrq!W0H@|Vk73KU z8PLG(?$F%!-MI>od^fN{71i}zC1Blc$MPGZuAhxlqE|rYt0=|BJ17DErsv_(iSXg# zO+@_VjgdmeVPOB1$L&1ckmex3yA2$OSfwp763e)X72u-MMLj24aN1pOA1dU z_mbkeck9};&K@sV);Q|=4MIKXGHGeAVWl@<3nh9GUfhmO?&d;UZj^0pWGfUBbZ-on zr8~#e8)u{u&J=sH;C!ple(vzwF<29c@@HTua3-}ZdPvd*Yn}a3?ZWAQK4O#;BD}Pu z`pLd%vYBUn!*z&OF;^^)Pe?p3SP63;M60}B<%bMeM_d4^9(dZ8Uw>s9p z9-Az${R7nDx=sA5 z2CL;&#y#PL4_0R+@q&xmnnJbx^;zG%_aMD}cZ%<6MLh0mHTZmwkKv38+rCC)?Q>5D@N`{@c_dlXE{ zxozhK?IiO^+2$^Y9@qK7WW$4t%S+Gfs_yKC)D3)Dh7e7vWfEfkS}APWf(dIu>_Qod zZ%HE@BFc0k*^PIW~r0tWH_ vN}~R&@DKU=5AFJ&?CSqOVi{@~n1@Dtnc8caOiF)&J%FmBmICahW%$1Ul^fD& literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png b/mac-app/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..49af82d372bcf1cb38eedab1685a0636112afd8b GIT binary patch literal 5511 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 literal 0 HcmV?d00001 diff --git a/mac-app/src-tauri/src/lib.rs b/mac-app/src-tauri/src/lib.rs new file mode 100644 index 0000000..42dc9a5 --- /dev/null +++ b/mac-app/src-tauri/src/lib.rs @@ -0,0 +1,89 @@ +use tauri::Manager; +use tauri_plugin_shell::ShellExt; +use tauri_plugin_shell::process::CommandEvent; +use std::sync::Mutex; +use std::path::PathBuf; + +struct BackendState { + child: Option, +} + +fn get_app_data_dir(app: &tauri::AppHandle) -> PathBuf { + let dir = app + .path() + .app_data_dir() + .unwrap_or_else(|_| { + dirs::data_dir().unwrap_or_else(|| PathBuf::from(".")) + }); + std::fs::create_dir_all(&dir).ok(); + dir +} + +#[tauri::command] +fn kill_backend(state: tauri::State<'_, Mutex>) { + if let Some(child) = state.lock().unwrap().child.take() { + let _ = child.kill(); + } +} + +#[tauri::command] +fn get_backend_url() -> String { + "http://localhost:8501".to_string() +} + +#[cfg_attr(mobile, tauri::mobile_entry_point)] +pub fn run() { + tauri::Builder::default() + .plugin(tauri_plugin_shell::init()) + .manage(Mutex::new(BackendState { child: None })) + .setup(|app| { + let app_data_dir = get_app_data_dir(&app.handle()); + let data_dir_str = app_data_dir.to_string_lossy().to_string(); + + println!("[tauri] App data dir: {}", data_dir_str); + + let sidecar_command = app + .shell() + .sidecar("meeting-backend") + .expect("failed to find meeting-backend sidecar binary") + .env("MEETING_DATA_DIR", &data_dir_str); + + let (mut rx, child) = sidecar_command + .spawn() + .expect("failed to spawn meeting-backend sidecar"); + + let state: tauri::State<'_, Mutex> = app.state(); + state.lock().unwrap().child = Some(child); + + tauri::async_runtime::spawn(async move { + while let Some(event) = rx.recv().await { + match event { + CommandEvent::Stdout(line) => { + println!("[backend] {}", String::from_utf8_lossy(&line)) + } + CommandEvent::Stderr(line) => { + eprintln!("[backend] {}", String::from_utf8_lossy(&line)) + } + CommandEvent::Terminated(payload) => { + eprintln!("[backend] terminated: {:?}", payload); + break; + } + _ => {} + } + } + }); + + Ok(()) + }) + .on_window_event(|window, event| { + if let tauri::WindowEvent::Destroyed = event { + let state: tauri::State<'_, Mutex> = window.state(); + if let Some(child) = state.lock().unwrap().child.take() { + let _ = child.kill(); + }; + } + }) + .invoke_handler(tauri::generate_handler![kill_backend, get_backend_url]) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); +} diff --git a/mac-app/src-tauri/src/main.rs b/mac-app/src-tauri/src/main.rs new file mode 100644 index 0000000..8b30810 --- /dev/null +++ b/mac-app/src-tauri/src/main.rs @@ -0,0 +1,6 @@ +// Prevents additional console window on Windows in release, DO NOT REMOVE!! +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +fn main() { + meeting_recorder_lib::run() +} diff --git a/mac-app/src-tauri/tauri.conf.json b/mac-app/src-tauri/tauri.conf.json new file mode 100644 index 0000000..2a15695 --- /dev/null +++ b/mac-app/src-tauri/tauri.conf.json @@ -0,0 +1,44 @@ +{ + "$schema": "https://raw.githubusercontent.com/tauri-apps/tauri/dev/crates/tauri-config-schema/schema.json", + "productName": "Meeting Recorder", + "version": "1.0.0", + "identifier": "com.meeting.recorder", + "build": { + "frontendDist": "../../frontend/dist", + "devUrl": "http://localhost:3000", + "beforeDevCommand": "cd ../frontend && npm run dev", + "beforeBuildCommand": "cd ../frontend && npm run build" + }, + "app": { + "windows": [ + { + "title": "智能会议记录系统", + "width": 1200, + "height": 800, + "minWidth": 900, + "minHeight": 600, + "resizable": true, + "fullscreen": false + } + ], + "security": { + "csp": null + } + }, + "bundle": { + "active": true, + "targets": ["dmg", "app"], + "externalBin": ["binaries/meeting-backend"], + "resources": [], + "macOS": { + "minimumSystemVersion": "12.0", + "infoPlist": "Info.plist" + }, + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns" + ] + } +} diff --git a/main.py b/main.py index 84d0469..4831156 100644 --- a/main.py +++ b/main.py @@ -24,6 +24,18 @@ from database import init_db, Database from processor import MeetingProcessor, get_device, RealtimeTranscriber +# 数据目录:优先使用环境变量(Tauri 打包后由 sidecar 设置),否则使用项目根目录 +def get_data_dir(): + env_dir = os.environ.get("MEETING_DATA_DIR") + if env_dir: + data_dir = os.path.join(env_dir, "data") + else: + project_root = os.path.dirname(os.path.abspath(__file__)) + data_dir = os.path.join(project_root, "data") + os.makedirs(data_dir, exist_ok=True) + return data_dir + + # 全局变量 db: Database = None processor: MeetingProcessor = None @@ -146,8 +158,7 @@ async def upload_meeting( raise HTTPException(status_code=400, detail="不支持的文件类型") # 保存文件 - project_root = os.path.dirname(os.path.abspath(__file__)) - data_dir = os.path.join(project_root, "data", "audio") + data_dir = os.path.join(get_data_dir(), "audio") os.makedirs(data_dir, exist_ok=True) ext = os.path.splitext(file.filename)[1] or ".mp3" @@ -177,6 +188,27 @@ async def upload_meeting( return meeting +@app.post("/api/meetings/{meeting_id}/retranscribe") +async def retranscribe_meeting(meeting_id: str): + """重新转录会议(用于卡在 processing 的会议)""" + meeting = db.get_meeting(meeting_id) + if not meeting: + raise HTTPException(status_code=404, detail="会议不存在") + + audio_path = meeting.get('audio_path') + if not audio_path or not os.path.exists(audio_path): + raise HTTPException(status_code=400, detail="音频文件不存在") + + # 重置状态 + db.update_meeting(meeting_id=meeting_id, status="processing", segments=None) + + # 重新入队 + task_queue.put((meeting_id, audio_path, meeting['title'])) + print(f"📋 重新转录任务已加入队列: {meeting['title']} (ID: {meeting_id})") + + return {"message": "已重新加入转录队列", "meeting_id": meeting_id} + + @app.delete("/api/meetings/{meeting_id}") async def delete_meeting(meeting_id: str): """删除会议""" @@ -440,8 +472,7 @@ async def realtime_transcribe(websocket: WebSocket, session_id: str): # 录音结束,保存会议 if transcriber and audio_chunks: # 保存录音文件 - project_root = os.path.dirname(os.path.abspath(__file__)) - data_dir = os.path.join(project_root, "data", "audio") + data_dir = os.path.join(get_data_dir(), "audio") os.makedirs(data_dir, exist_ok=True) audio_filename = f"{datetime.now().strftime('%Y%m%d_%H%M%')}{session_id}.wav"