mirror of
https://github.com/narrrl/proton-stream.git
synced 2026-11-04 00:47:00 +01:00
fix(core,app,android,cli,packaging): harden account sign-in and watch-history sync
- 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.
This commit is contained in:
1 parent
26cccd5c63
commit
d9ca8f8d60
28 files changed
+2475
-186
No files matched your search
@@ -232,9 +232,16 @@ stage() {
|
||||
[[ -f "$rel/$f" ]] || die "$f missing from $rel — drop --skip-build"
|
||||
done
|
||||
|
||||
# The CAPTCHA window's WebView2 loader. Under -msvc it links statically;
|
||||
# under -gnu, webview2-com-sys links the DLL, which it ships and copies into
|
||||
# its build output, so the exe does not start without it beside it.
|
||||
local loader
|
||||
loader="$(ls -t "$rel"/build/webview2-com-sys-*/out/x64/WebView2Loader.dll 2>/dev/null | head -n1)"
|
||||
[[ -n "$loader" ]] || die "WebView2Loader.dll missing from $rel/build — drop --skip-build"
|
||||
|
||||
rm -rf "$OUTDIR"
|
||||
mkdir -p "$OUTDIR"
|
||||
install -m755 "$rel/$GUI_BIN" "$rel/$CLI_BIN" "$MPV_DLL" "$OUTDIR/"
|
||||
install -m755 "$rel/$GUI_BIN" "$rel/$CLI_BIN" "$MPV_DLL" "$loader" "$OUTDIR/"
|
||||
install -m644 "$ROOT/README.md" "$OUTDIR/"
|
||||
|
||||
if [[ -n "$SIGN_CERT" ]]; then
|
||||
@@ -295,6 +302,7 @@ make_msi() {
|
||||
-D "Version=$VERSION" \
|
||||
-D "BinDir=$OUTDIR" \
|
||||
-D "MpvDll=$OUTDIR/libmpv-2.dll" \
|
||||
-D "WebViewLoader=$OUTDIR/WebView2Loader.dll" \
|
||||
-D "IconFile=$PKG/proton-stream.ico" \
|
||||
-D "ReadMe=$OUTDIR/README.md" \
|
||||
-o "$out" "$PKG/proton-stream.wixl.wxs"
|
||||
|
||||
+1
-1
@@ -229,7 +229,7 @@ Priority: optional
|
||||
Architecture: $arch
|
||||
Maintainer: Nils Pukropp <contact@narl.io>
|
||||
Installed-Size: $size
|
||||
Depends: libc6, libmpv2 | libmpv1, libsecret-1-0, libgl1, libxkbcommon0, libx11-6, libwayland-client0
|
||||
Depends: libc6, libmpv2 | libmpv1, libsecret-1-0, libwebkit2gtk-4.1-0, libgl1, libxkbcommon0, libx11-6, libwayland-client0
|
||||
Recommends: gnome-keyring
|
||||
Homepage: https://github.com/narrrl/proton-stream
|
||||
Description: Netflix-style desktop client for Proton Drive public links
|
||||
|
||||
Reference in new issue
Block a user