Combines dioxus's desktop (webview) renderer with the existing `server` feature so `#[server]` functions execute in-process instead of going over HTTP — one self-contained native binary with DB, feed polling, LLM calls, and the scheduler, no separate server to run. main.rs picks the desktop launcher explicitly since dioxus::launch's automatic platform detection would otherwise prefer the (also-enabled) server platform over desktop. Verified: cargo check/clippy pass for the new feature (native crates and existing server/web features unaffected), and running the built binary opens a window and completes an in-process server-fn call (DB connects, migrations run) with no HTTP round trip. CI gets a matching desktop clippy job with the GTK/WebKit apt packages dioxus-desktop needs to compile on Linux. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
52 lines
1.9 KiB
TOML
52 lines
1.9 KiB
TOML
[package]
|
|
name = "feedsignal-web"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
|
|
[dependencies]
|
|
feedsignal-core.workspace = true
|
|
serde.workspace = true
|
|
dioxus = { version = "0.7", features = ["router", "fullstack"] }
|
|
|
|
# Server-only dependencies: feed polling, the DB/LLM pipeline, and the
|
|
# scheduler only need to exist in the native server binary, never in the
|
|
# WASM bundle shipped to the browser.
|
|
feedsignal-db = { workspace = true, optional = true }
|
|
feedsignal-feeds = { workspace = true, optional = true }
|
|
feedsignal-llm = { workspace = true, optional = true }
|
|
tokio = { workspace = true, optional = true }
|
|
tracing = { workspace = true, optional = true }
|
|
tracing-subscriber = { workspace = true, optional = true }
|
|
anyhow = { workspace = true, optional = true }
|
|
uuid = { workspace = true, optional = true }
|
|
chrono = { workspace = true, optional = true }
|
|
serde_json = { workspace = true, optional = true }
|
|
tokio-cron-scheduler = { version = "0.13", optional = true }
|
|
dioxus-primitives = { git = "https://github.com/DioxusLabs/components", version = "0.0.1", default-features = false }
|
|
feedsignal-dioxus-components.workspace = true
|
|
|
|
[features]
|
|
default = ["web"]
|
|
web = ["dioxus/web"]
|
|
server = [
|
|
"dioxus/server",
|
|
"dep:feedsignal-db",
|
|
"dep:feedsignal-feeds",
|
|
"dep:feedsignal-llm",
|
|
"dep:tokio",
|
|
"dep:tracing",
|
|
"dep:tracing-subscriber",
|
|
"dep:anyhow",
|
|
"dep:uuid",
|
|
"dep:chrono",
|
|
"dep:serde_json",
|
|
"dep:tokio-cron-scheduler",
|
|
]
|
|
# Self-contained native desktop build: a single binary with the webview UI
|
|
# and the "server" feature's DB/feed-polling/LLM stack running in the same
|
|
# process. `#[server]` functions dispatch on the "server" feature alone
|
|
# (see dioxus-fullstack-macro), so enabling it here makes them execute
|
|
# in-process instead of generating an HTTP client stub — no separate axum
|
|
# server or network hop needed.
|
|
desktop = ["dioxus/desktop", "server"]
|