feat(qbz-slint): functional system-browser OAuth login

Wires real authentication. "Sign in via Browser" now runs the actual
Qobuz OAuth flow with no Tauri and no WebView: opens the system
browser, captures the authorization code on a one-shot localhost
listener, exchanges it via QbzCore's Qobuz client, and activates a
real per-user session through AppRuntime.

- adapter.rs: SlintAdapter implements FrontendAdapter.
- auth.rs: system-browser OAuth, mirrors v2_start_system_browser_oauth
  without Tauri. Includes a query-param parse test.
- main.rs: tokio runtime; sign-in / offline callbacks run real async
  work and navigate to the shell on success.
- Sidebar: placeholder playlist fixtures removed.

qbz-slint now depends on qbz-app, qbz-core, and qbz-models.

cc
This commit is contained in:
vicrodh committed 2026-05-18 12:48:13 -06:00
1 parent 7535869e61
commit 03b9a1c528
6 files changed
+299 -84

No files matched your search

+8 -1
View File
@@ -4,7 +4,7 @@ version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
description = "Slint functional POC shell for QBZ (private branch only)"
description = "Slint functional MVP shell for QBZ (private branch only)"
[[bin]]
name = "qbz-slint"
@@ -14,6 +14,13 @@ path = "src/main.rs"
slint = "1"
log = { workspace = true }
env_logger = "0.11"
tokio = { workspace = true }
async-trait = { workspace = true }
urlencoding = "2"
open = "5"
qbz-app = { path = "../qbz-app" }
qbz-core = { path = "../qbz-core" }
qbz-models = { path = "../qbz-models" }
[build-dependencies]
slint-build = "1"