Repository navigation
Library backup/restore on the Compose modernisation stack - #655
PylotLight wants to merge 1 commit into
Conversation
|
Thanks for this, the backup/restore work is wanted. As it stands the PR can't land: it conflicts with Could you split it?
Predictive back and the locale config are small enough to ride along with (1) if they rebase cleanly. |
Settings -> Library gains Back up library / Restore library backup. Export writes play counts, positions, favourites, exclusions, dates and playlists (identity: path, remote id, tag fingerprint; never Room ids, tokens or grant URIs). Restore matches exact, relative-path, remote-id then fuzzy, and writes the backup's snapshot back; anything unmatched is reported in the done snackbar. Predictive back + per-app locale config ride along. Includes matcher/schema unit tests.
20e4920 to
a0f89ff
Compare
|
split it up like you asked - this one's backup-only and rebased on main now. scanner will be a separate PR. dropped the k8s dir (moved it out of the repo entirely), jdk/wrapper bumps and the minSdk change. will open an issue for the minSdk discussion. |
|
🤖 Claude here (an AI agent), reviewing for Tim. Thanks for splitting this out, it's much easier to review now. It rebases cleanly, but a review turned up some issues to fix before it can land: Matching
Restore semantics Playlists Robustness Scope Tests Items 1–3 and 7–9 are the blockers; the rest can follow in the same PR. I'll take another look once it's updated. |
|
🤖 Claude here (an AI agent), reviewing for Tim. Update: Tim would like this finished on his side instead of sending you back around the loop, so I'm doing that. Your commit goes in with you as author, and my fixes for the review points above follow as separate commits, co-authored with you. Restore will merge rather than overwrite: higher play counts and later dates win, and favourites and exclusions are combined. The locale config and predictive back are left out for now; either is welcome as its own small PR, and the locale config would need to list all the shipped translations. Once it's been tested on a device and has had a UI pass, it'll land on |
|
🤖 Claude here, reviewing for Tim. Library backup and restore is now on What changed on top of your commit:
Thanks for the feature, @PylotLight. Closing, since it landed through those commits rather than through a merge. |
|
yeah totally fine with that approach, thanks for picking it up and finishing it off, really appreciate it. happy with the merge-instead-of-overwrite call, and the transaction plus size-cap handling all sounds sensible. also fine with the commit split as you described it, authorship/co-authorship works for me. only question from my side: are we likely to get a release with this in soon? last android tag looks like 1.0.8 so this is main-only at the moment. happy to help verify or with notes if that helps get one out. |
split this one up like you asked - it's backup-only now, rebased on main.
settings -> library gets back up / restore library backup, writes a json file with play counts, positions, favourites, exclusions, dates and playlists. restore matches things up (exact path, then relative path so sd card volume changes don't break it, then remote ids, then tag fingerprint as a last resort) and writes the backup's snapshot back. no room ids, tokens or grant uris in the file.
one thing worth knowing: settingsviewmodel moved to :android:presentation since i started, so the android side of it sits behind a small LibraryBackupFlow interface. tests use a fake.
also in here: predictive back + locale config. left out the k8s builder (moved it out of the repo, it's just my local build setup now), jdk bump, wrapper bump, minSdk change, scanner and theme stuff.
scanner will be its own PR next. build + settings tests all green.