Adds the full keybindings system (26 actions, 5 categories, customizable and persisted) plus the Ctrl+L "Open Qobuz Link" cross-platform resolver to the Slint frontend, matching the Tauri implementation 1:1. - New shared crate qbz-music-link: de-Tauri'd cross-platform link resolver (Qobuz/Spotify/Apple/Tidal/Deezer/song.link via Odesli) behind a QobuzSearchBridge trait. src-tauri left untouched. - src/keybindings.rs: action model, winit shortcut grammar, conflict detection, ui_prefs persistence, main-window + miniplayer dispatch. - src/link_resolver.rs: controller + bridge over QbzCore. - New globals + 3 modals (read-only cheatsheet, customize editor with key capture, link resolver), hamburger menu entries, and a UiFocusState text-input guard wired across the app's TextInputs. cc
28 lines
612 B
TOML
28 lines
612 B
TOML
[package]
|
|
name = "qbz-music-link"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
description = "Frontend-agnostic cross-platform music-link resolver for QBZ (Qobuz/Spotify/Apple/Tidal/Deezer/Odesli -> Qobuz)"
|
|
|
|
[dependencies]
|
|
qbz-qobuz = { path = "../qbz-qobuz" }
|
|
qbz-models = { path = "../qbz-models" }
|
|
|
|
# Async
|
|
tokio = { workspace = true }
|
|
async-trait = { workspace = true }
|
|
|
|
# HTTP
|
|
reqwest = { workspace = true }
|
|
|
|
# Serialization
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
|
|
# Logging
|
|
log = { workspace = true }
|
|
|
|
# Error handling
|
|
thiserror = { workspace = true }
|