使用 Rust + Slint 重建一个轻量、现代、Windows 原生体验良好的 Gotify
桌面客户端。本次只搭目录骨架与占位文件,未进入 Phase 1(Bootstrap)。
本次提交内容
------------
- 保留 AGENTS.md(1363 行定制 Agent 实施计划,含 8 阶段路线图)
- 新建 Cargo.toml([package] 元数据 + AGENTS.md §44 依赖模板 + §42
release profile;无 [[bin]],等 Phase 1 才加 src/main.rs)
- 新建 README.md(项目导览,引用 AGENTS.md)
- 新建 .gitignore(Rust / Slint / Windows / IDE / 密钥)
- 新建 LICENSE(MIT 占位)
- 按 AGENTS.md §4 建好全部 10 个目录,每个空目录放 .gitkeep:
assets/ assets/fonts/
ui/ scripts/
src/ src/gotify/
src/storage/ src/windows/
src/services/ tests/
未提交(Phase 1 起才落地)
------------------------
- src/main.rs 及所有 .rs 业务代码
- ui/*.slint 视图
- scripts/build-release.ps1 等构建脚本
- Cargo.lock(当前 Cargo.toml 是占位、无可编译代码)
技术栈约束(来自 AGENTS.md §1 / §2)
------------------------------------
- Rust stable + Slint 1.17.x + Windows 10/11
- 显式禁用:Tauri / Wails / Electron / WebView2 / WPF / WinUI 3 / Node 运行时
- 单一主程序,无浏览器运行时依赖;UI 由 Slint 原生渲染
仓库
----
远程:https://gitea.kennethcheng.cc/KennethCheng/Windows-Gotify-Client-Rust
53 lines
1.6 KiB
TOML
53 lines
1.6 KiB
TOML
# Placeholder Cargo.toml — actual configuration is finalized in Phase 1 (Bootstrap).
|
|
# See AGENTS.md §44 (dependency rationale) and §42 (release profile) for guidance.
|
|
#
|
|
# Until Phase 1 lands:
|
|
# - No [[bin]] / src/main.rs is declared yet, so `cargo build` is a no-op.
|
|
# - The dependency list below is a copy of the AGENTS.md template;
|
|
# versions will be verified against the locked Rust toolchain in Phase 1.
|
|
# - No Cargo.lock will be committed until a real build exists.
|
|
|
|
[package]
|
|
name = "windows-gotify-client-rust"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
rust-version = "1.75"
|
|
description = "Lightweight, modern, Windows-native Gotify desktop client (Rust + Slint)"
|
|
license = "MIT"
|
|
readme = "README.md"
|
|
authors = ["KennethCheng <a1478925630@163.com>"]
|
|
|
|
[dependencies]
|
|
# --- UI ---
|
|
slint = "1.17"
|
|
|
|
# --- Serialization ---
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
|
|
# --- Networking (blocking HTTP + plain WebSocket, no full async runtime yet) ---
|
|
reqwest = { version = "0.12", default-features = false, features = ["blocking", "json", "rustls-tls"] }
|
|
tungstenite = "0.21"
|
|
url = "2"
|
|
|
|
# --- Logging ---
|
|
tracing = "0.1"
|
|
tracing-subscriber = "0.3"
|
|
|
|
# --- Error handling ---
|
|
anyhow = "1"
|
|
thiserror = "2"
|
|
|
|
# Windows-only focused crates are added on demand in Phase 6 (Windows Integration).
|
|
# Do not import the umbrella `windows` crate wholesale — see AGENTS.md §1.
|
|
|
|
[profile.release]
|
|
opt-level = "z"
|
|
lto = true
|
|
codegen-units = 1
|
|
panic = "abort"
|
|
strip = true
|
|
|
|
[profile.release-balanced]
|
|
inherits = "release"
|
|
opt-level = 3 |