This is the first time we had this much wait between two releases, but it had a big reason behind that; app has gone through a very large refactor! This refactor enables easier development as feature parts are now more isolated, which also opens paths to new contributors, which got also made easier with the new development container.
This refactor also comes with many bug fixes that I've forgotten the count of, new features, with the most exciting one being sidebars being resizeable directly now! This was quite a big challenge to get it right with GTK API, and Rufin's own behavior but it is finally here, and you can just drag to resize the sidebars, both the left and the right.
Other important changes are mostly in source backend, Rufin is now more "up-to-date" with the source and handles pruning better. The rest of the remarkable changes:
- A much more efficient sync mechanism; faster and smarter in the way that it tracks changes
- A lot of smaller errors are were sent as toast notifications, now it is less likely to see one for an error
- Pages now remember where you were last on, scrolling position is not reset every time anymore
- Server switching is now instant if the server was not stale nor did not have any changes
- Lyrics offset can now be set directly from the panel
- Lyrics panel is redesigned; it is now fully expandable top edge, and search button is moved to only be present on hover, giving the panel more size
Changelog
- fix(discord): respect metadata source by @screwys in #468
- fix(metadata): validate provider URLs by @screwys in #469
- refactor(playlists): model source ownership by @screwys in #470
- refactor(favorites): route by source ownership by @screwys in #471
- refactor: consolidate source capabilities by @screwys in #472
- fix(ui): restore favorite feedback by @screwys in #473
- docs(readme): add section for project scope by @screwys in #474
- refactor: model source capabilities by @screwys in #475
- docs(readme): scope security mention by @screwys in #477
- Translations update from Hosted Weblate by @weblate in #476
- refactor(source): rename source identity by @screwys in #478
- refactor(library): materialize artist relations by @screwys in #479
- chore(deps): update renovatebot/github-action action to v46.1.17 by @rufin-renovate in #480
- chore(deps): update rust minor and patch dependencies by @rufin-renovate in #481
- chore(deps): update cachix/install-nix-action digest to a49548c by @rufin-renovate in #482
- refactor(source): replace source model by @screwys in #483
- refactor(sync): replace library sync by @screwys in #484
- refactor: consolidate product ownership by @screwys in #487
- chore: simplify lint policy by @screwys in #488
- refactor: stabilize runtime ownership by @screwys in #489
- chore: update readme by @screwys in #491
- chore(deps): update renovatebot/github-action action to v46.1.18 by @rufin-renovate, @screwys in #490
- chore: update readme by @screwys in #492
- chore(docs): add project structure to contributing.md by @screwys in #494
- chore: clarify contributing.md by @screwys in #495
- chore(deps): update rust crate adw to v0.9.2 by @rufin-renovate in #496
- refactor(ui): replace presentation ownership by @screwys in #497
- Translations update from Hosted Weblate by @weblate, @aguhadug in #498
- build: add development container by @screwys in #499
- fix(ui): use portable link icon by @screwys in #500
- ci: restore build cache reuse by @screwys in #501
- perf(sync): trim relation payloads by @screwys in #502
- chore: simplify lint policy by @screwys in #503
- ci: split container checks by @screwys in #504
- ci: silence rust cache probe by @screwys in #505
- feat(ui): redesign lyrics controls by @screwys in #506
- fix(i18n): stabilize template ordering by @screwys in #507
- fix(ui): keep home stable during automatic sync by @screwys in #508
- chore: update contributing docs by @screwys in #510
- refactor(nix): use lockfile dependencies by @screwys in #509
- chore(packaging): align native dependencies by @screwys in #513
- perf(ui): prepare home overview by @screwys in #514
- fix: share worktree cache by @screwys in #515
- perf(library): skip terminal genre count by @screwys in #516
- ci: remove duplicate Rust verification by @screwys in #517
- refactor: clarify controller ownership by @screwys in #518
- fix(ui): align home header controls by @screwys in #519
- refactor(home): own home projections by @screwys in #520
- refactor(ui): remove global search by @screwys in #521
- perf(ui): streamline track collections by @screwys in #522
- perf(store): streamline collection queries by @screwys in #523
- chore(dev): add re-entry checks by @screwys in #524
- chore(dev): check RefCell borrows by @screwys in #525
- chore: update contributor docs by @screwys in #526
- refactor(ui): replace detail ownership by @screwys in #527
- perf(library): streamline smart playlists by @screwys in #528
- fix(ui): keep lyrics offset controls by @screwys in #529
- fix(ui): polish folders and screenshots by @screwys in #530
Full Changelog: v0.8.0...v0.9.0