v0.2.0: Device menu — sync a playlist to the Rabbit R1
New Device menu (left of Track) with "Sync Playlist to Rabbit", enabled only when a playlist is showing and the Rabbit is plugged in. The Rabbit mounts over MTP/gvfs (not mass storage), so device_sync.py drives it with plain file I/O honoring the MTP caveats: no copystat, diff by name+size. One-way mirror into Music/<Playlist>/ on the device — stale files deleted (that folder only), Auxio-importable .m3u carries the order, free space checked up front with a needed-vs-available alert, and a right-justified status-bar progress bar tracks the chunked copies. Verified live against the real Rabbit end to end. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -97,6 +97,14 @@ persistence) → GUI (Qt widgets that read the manager and connect to its signal
|
||||
so the desktop's media keys / now-playing popup control playback. Spacebar and
|
||||
arrow keys are handled locally via `MainWindow.eventFilter`.
|
||||
|
||||
- **`lintunes/device_sync.py`** — one-way playlist sync to the Rabbit R1 (Device
|
||||
menu). The Rabbit mounts via **MTP/gvfs** (a FUSE path under
|
||||
`/run/user/<uid>/gvfs`), not mass storage — so plain file I/O, but never
|
||||
copystat and never trust mtimes (diff by name+size). Sync owns exactly
|
||||
`Music/<Playlist Name>/` on the device (creates/overwrites/deletes there,
|
||||
plus an Auxio-importable `.m3u`); it never deletes outside that folder and
|
||||
only ever *reads* local library files.
|
||||
|
||||
## Conventions & gotchas
|
||||
|
||||
- **Tests are organized as `tests/test_roundN.py`** — each development round adds
|
||||
|
||||
Reference in New Issue
Block a user