feedsignal/crates/web/Cargo.toml
Austin Schaefer 67d399ad05
All checks were successful
CI / check (pull_request) Successful in 7m49s
CI / test (pull_request) Successful in 3m37s
CI / audit (pull_request) Successful in 14s
Add desktop platform support via a new feedsignal-web desktop feature
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>
2026-09-15 12:36:22 +02:00

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"]