Other Improvements:
- Updated translations
- Performance improvements
What's Changed
- (Re)introduce a backend interface by @leolost2605 in #2406
- Readme: Remove mention of restart required message by @leolost2605 in #2410
- Remove unused AsyncMutex and SuspendControl by @leolost2605 in #2409
- HumbleButton: Remove unused allow free by @leolost2605 in #2408
- Fix some warnings regarding icons by @leolost2605 in #2412
- Fix empty toast on unknown operation (i.e. currently only update) by @leolost2605 in #2415
- Don't check whether installed view is null because it always is by @leolost2605 in #2418
- Screenshot: Guard against null color by @leolost2605 in #2417
- Fix back button warning by @leolost2605 in #2416
- AppListUpdateView: Clamp to 800 by @leolost2605 in #2407
- AppListUpdateView: set last checked as installed secondary text by @danirabbit in #2420
- Homepage: Drop Appcenter banner by @leolost2605 in #2411
- ChangeInfo: Update properties on the main thread, use property bindings by @leolost2605 in #2405
- Prepare speed up by @leolost2605 in #2419
- Banner: use Granite.HeaderLabel by @danirabbit in #2423
- Banner: simplify construction by @danirabbit in #2422
- Use HeaderLabel size property by @danirabbit in #2425
- AppListUpdateView: Add a queue of working packages by @leolost2605 in #2424
- AppListUpdateView: put size in updates header secondary text by @danirabbit in #2426
- AppStream.Pool: Don't load OS catalog by @leolost2605 in #2428
- ListModels: Use n items instead of custom properties by @leolost2605 in #2427
- ReleasesDialog: Make listbox no select by @leolost2605 in #2429
- Speed up get_packages_for_component_id and prepare for future improvements by @leolost2605 in #2421
Full Changelog: 8.3.2...8.4.0