Add comprehensive AppImage metadata extraction, display, and bug fixes
- Add AppStream XML parser (quick-xml) to extract rich metadata from bundled metainfo/appdata files: description, developer, license, URLs, keywords, categories, content rating, release history, and MIME types - Database migration v9: 16 new columns for extended metadata storage - Extended inspector to parse AppStream XML, desktop entry extended fields, and detect binary signatures without executing AppImages - Redesigned detail view overview tab with 8 conditional groups: About, Description, Links, Release History, Usage, Capabilities, File Info - Fix crash on exit caused by stale GLib SourceId removal in debounce timers - Fix wayland.rs executing AppImages directly to detect squashfs offset, replaced with safe binary scan via find_squashfs_offset_for() - Fix scan skipping re-analysis of apps missing new metadata fields
This commit is contained in:
@@ -876,7 +876,12 @@ 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();
|
||||
if size_unchanged && mtime_unchanged && analysis_done && has_icon {
|
||||
// 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 {
|
||||
skipped_count += 1;
|
||||
continue;
|
||||
}
|
||||
@@ -965,9 +970,13 @@ impl DriftwoodWindow {
|
||||
}
|
||||
|
||||
let window_weak4 = window_weak3.clone();
|
||||
let refresh_timer_clear = refresh_timer.clone();
|
||||
let timer_id = glib::timeout_add_local_once(
|
||||
std::time::Duration::from_millis(300),
|
||||
move || {
|
||||
// Clear the stored SourceId so nobody tries to remove a fired timer
|
||||
refresh_timer_clear.set(None);
|
||||
|
||||
if let Some(window) = window_weak4.upgrade() {
|
||||
let db = window.database();
|
||||
let lib_view = window.imp().library_view.get().unwrap();
|
||||
|
||||
Reference in New Issue
Block a user