- src/storage.rs: AppState (last_window_width/height) + load/save atomic write 到 %APPDATA%/WindowsGotify/state.json(§18) - ui/settings-page.slint: 5 分组(Connection / Notifications / Startup / Appearance / Advanced),Appearance 实时切主题(System/Light/Dark radio);Advanced 折叠 - ui/dialogs.slint: AboutDialog + ConfirmDialog(§54) - ui/server-card.slint: 单 server 行(name/url/enabled toggle/edit/remove) - ui/app.slint: settings 页切换、About 导航、theme 联动 - src/lib.rs: load_state → 启动时应用窗口尺寸;ui.window() .on_close_requested 在 OS 关闭前 save_state;wire about/close callbacks - src/error.rs: 加 AppError::Storage(String) 变体 - Cargo.toml: 加 serde + serde_json 避坑: - Slint 1.x 同文件内 export component 必须在引用前定义(sub-components 移到 SettingsPage 上面) - Slint 不支持 padding 两值简写 (padding: 0 16px) → 用 padding-* 四属性 - Slint 不支持 Rectangle 内建 border-color 覆盖 → 命名 card-border - Slint 不支持 alignment: right → 用 spacer + horizontal-stretch: 1 - 修了一处 .slint 文件被 PowerShell Set-Content GBK 损坏的问题(已 通过 write 工具 + UTF-8 no BOM 重写并清理 ui/ 所有 .slint) 验证:cargo build / build --release 都 exit 0,0 warning - debug 27.55 MB, subsystem = WINDOWS_CUI - release 8.10 MB, subsystem = WINDOWS_GUI
56 lines
1.7 KiB
TOML
56 lines
1.7 KiB
TOML
# Cargo.toml — Phase 1 (Bootstrap).
|
|
#
|
|
# Dependency rationale lives in AGENTS.md §44. Only the crates actually used
|
|
# by Phase 1 are listed; the remaining crates (reqwest / tungstenite / serde /
|
|
# url / anyhow / ...) are added in later phases when their modules land.
|
|
|
|
[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>"]
|
|
|
|
[[bin]]
|
|
name = "windows-gotify-client-rust"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
# --- UI ---
|
|
# `slint` crate. The `slint!{}` macro is compiled in via the default feature
|
|
# set in 1.x (verified against 1.18.0 — `internal-interpreter` was removed in
|
|
# 1.x). The Windows GUI backend (`backend-winit`) is also part of defaults.
|
|
# Phase 2 will likely switch from the embedded macro to `include_slint!()`
|
|
# + standalone .slint files under `ui/`.
|
|
slint = "1"
|
|
|
|
# --- Logging ---
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
|
|
# --- Error handling ---
|
|
thiserror = "2"
|
|
|
|
# --- Serialization (Phase 2 C3 storage) ---
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
|
|
# Slint's `.slint` files are compiled by `build.rs`; see build.rs.
|
|
[build-dependencies]
|
|
slint-build = "1"
|
|
|
|
[profile.release]
|
|
# See AGENTS.md §42. The `release-balanced` profile below is the practical
|
|
# default after benchmarking — adjust if startup time regresses.
|
|
opt-level = "z"
|
|
lto = true
|
|
codegen-units = 1
|
|
panic = "abort"
|
|
strip = true
|
|
|
|
[profile.release-balanced]
|
|
inherits = "release"
|
|
opt-level = 3 |