mirror of
https://github.com/narrrl/proton-stream.git
synced 2026-11-03 16:41:26 +01:00
- Desktop shows Proton's CAPTCHA instead of failing the sign-in: a wry webview in a child process of the app (`pstr-app::verify`), confined to https://*.proton.me, hands the token back and the sign-in is retried. Linux packages and CI gain WebKitGTK 4.1; the Windows zip and MSI ship WebView2Loader.dll, without which a -gnu build does not start. - The desktop keyring splits a secret too long for one entry across several, so a Proton session with many key salts survives Windows' 1280-unit cap. Short secrets stay one entry, so every existing secret still reads. - `WatchSync` runs against a small `HistoryDrive` trait and is tested end to end against an in-memory Drive: two devices, newer wins, no re-upload of an unchanged history, a missing file written again, an unreadable own file never overwritten, a newer-format file left alone. - An installation's file unwritten for 90 days is retired by the next device to sync, after its entries are merged and carried in that device's file. - Removing a share keeps its watch state: sync would bring it back from the other devices anyway, and re-adding the share picks up where it left off. - Watch history syncs once more on desktop exit (bounded to 3 s) and, on Android, through a WorkManager job enqueued when the app leaves the screen. - The second-factor prompts say security keys are not supported.
54 lines
1.3 KiB
TOML
54 lines
1.3 KiB
TOML
[package]
|
|
name = "pstr-app"
|
|
description = "The proton-stream desktop application."
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
rust-version.workspace = true
|
|
authors.workspace = true
|
|
|
|
[[bin]]
|
|
name = "proton-stream"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
pstr-core.workspace = true
|
|
pstr-meta.workspace = true
|
|
pstr-stream.workspace = true
|
|
pstr-player.workspace = true
|
|
tokio.workspace = true
|
|
futures.workspace = true
|
|
anyhow.workspace = true
|
|
tracing.workspace = true
|
|
tracing-subscriber.workspace = true
|
|
eframe.workspace = true
|
|
egui.workspace = true
|
|
egui-phosphor.workspace = true
|
|
image.workspace = true
|
|
sha2.workspace = true
|
|
parking_lot.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
directories.workspace = true
|
|
chrono.workspace = true
|
|
souvlaki.workspace = true
|
|
wry.workspace = true
|
|
tao.workspace = true
|
|
|
|
[build-dependencies]
|
|
embed-resource.workspace = true
|
|
|
|
[dev-dependencies]
|
|
skrifa.workspace = true
|
|
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
dbus.workspace = true
|
|
|
|
[target.'cfg(windows)'.dependencies]
|
|
# Named pipes, for handing a second launch's request to the open window.
|
|
tokio = { workspace = true, features = ["net"] }
|
|
windows-sys = { workspace = true, features = ["Win32_System_Power", "Win32_System_Registry"] }
|
|
tauri-winrt-notification.workspace = true
|
|
raw-window-handle = "0.6"
|