Fix performance, add screenshots, make banner scrollable

- Make detail view banner scroll with content instead of staying fixed,
  preventing tall banners from eating screen space
- Optimize squashfs offset scanning with buffered 256KB chunk reading
  instead of loading entire file into memory (critical for 1.5GB+ files)
- Add screenshot URL parsing from AppStream XML and async image display
  with carousel in the overview tab
- Fix infinite re-analysis bug: has_appstream check caused every app
  without AppStream data to be re-analyzed on every startup. Now handled
  via one-time migration reset in v10
- Database migration v10: add screenshot_urls column, reset analysis
  status for one-time re-scan with new parser
This commit is contained in:
lashman
2026-02-27 18:44:50 +02:00
parent 1bb7a3bdc0
commit 8362e066f7
8 changed files with 231 additions and 34 deletions

View File

@@ -876,12 +876,7 @@ impl DriftwoodWindow {
let mtime_unchanged = modified.as_deref() == ex.file_modified.as_deref();
let analysis_done = ex.analysis_status.as_deref() == Some("complete");
let has_icon = ex.icon_path.is_some();
// Also re-analyze if AppStream metadata was never extracted
// (covers upgrades from older schema versions)
let has_appstream = ex.appstream_id.is_some()
|| ex.generic_name.is_some()
|| ex.has_signature;
if size_unchanged && mtime_unchanged && analysis_done && has_icon && has_appstream {
if size_unchanged && mtime_unchanged && analysis_done && has_icon {
skipped_count += 1;
continue;
}