Commit Graph

57 Commits

Author SHA1 Message Date
lashman
8cf71ae858 Add download verification with signature and SHA256 support
New verification module with GPG signature checking and SHA256 hash
computation. Security tab shows verification status, embedded signature
check button, and manual SHA256 input for verifying downloads.
2026-02-28 00:05:43 +02:00
lashman
97c7250666 Extract and apply StartupWMClass for proper taskbar icons
Parse StartupWMClass from embedded .desktop entries during analysis,
store in DB, include in generated .desktop files. Detail view shows
an editable WM class field with apply button for manual override.
2026-02-28 00:02:44 +02:00
lashman
01d453d329 Add file type association manager with MIME type support
Generated .desktop files now include MimeType and StartupWMClass when
available. Detail view system tab shows MIME types with per-type
"Set Default" buttons that use xdg-mime and track previous defaults
in system_modifications for reversal.
2026-02-28 00:00:42 +02:00
lashman
45b45c0724 Add FUSE fix wizard with pkexec installation
Dashboard shows a banner when FUSE is not functional. The wizard
detects the distro, shows the install command, and runs it via pkexec.
Verifies FUSE status after installation completes.
2026-02-27 23:59:26 +02:00
lashman
00a1ed3599 Add icon preview to drag-and-drop dialog
Fast icon extraction pulls .DirIcon from the squashfs without full
analysis. Single-file drops show a 64px preview in the dialog while
the user chooses an import option.
2026-02-27 23:58:09 +02:00
lashman
843af0a8a5 Add full uninstall dialog with data cleanup options
Storage tab now has an Uninstall button that shows checkboxes for the
AppImage file, desktop integration, and each discovered data path.
Removes selected items and cleans up the database on confirm.
2026-02-27 23:56:56 +02:00
lashman
1a6eb4ec99 Add one-click Update All with batch progress dialog
New batch_update_dialog shows all updatable AppImages with per-app
status badges and overall progress bar. Wired as win.update-all action
from dashboard when updates are available.
2026-02-27 23:55:04 +02:00
lashman
c311fb27c3 Add background update checks with configurable interval
Schedule automatic update checks on startup based on elapsed time
since last check. Add interval SpinRow to preferences and show
'Last checked' timestamp on the dashboard updates section.
2026-02-27 23:52:28 +02:00
lashman
c50b61fc83 Add per-app storage breakdown to detail view 2026-02-27 23:48:21 +02:00
lashman
0777ae1a26 Add system notification support for crashes and updates 2026-02-27 23:47:19 +02:00
lashman
9cf4f1126c Add autostart manager with XDG autostart support 2026-02-27 23:45:58 +02:00
lashman
730452072f Add batch selection and bulk operations to library view 2026-02-27 23:45:01 +02:00
lashman
5b668bd931 Wire auto-integrate setting to scan pipeline 2026-02-27 23:42:22 +02:00
lashman
8934e66f6d Add launch statistics to dashboard 2026-02-27 23:41:22 +02:00
lashman
78f004ff4f Add source URL tracking and display for AppImages 2026-02-27 23:40:18 +02:00
lashman
f5685e03e3 Add version rollback support for AppImage updates 2026-02-27 23:38:36 +02:00
lashman
e7a056c75a Add keep-in-place option for drag-and-drop imports 2026-02-27 23:37:03 +02:00
lashman
4173f33bbf Auto-fix executable permissions on discovered AppImages 2026-02-27 23:36:14 +02:00
lashman
8dd0dc71ed Add system modification tracking for reversible installs 2026-02-27 23:35:27 +02:00
lashman
6e2e7e8e36 Add detailed implementation plan for 26-task feature roadmap 2026-02-27 23:30:18 +02:00
lashman
5ef3789c7d Add feature roadmap design for 25 new features
Comprehensive design doc covering discovery-to-uninstall lifecycle:
- System modification tracking for clean reversible uninstalls
- Sorted by complexity from quick wins to major features
- Covers FUSE wizard, autostart, MIME types, catalog browser,
  portable mode, batch operations, and more
2026-02-27 23:24:34 +02:00
lashman
830c3cad9d Fix second audit findings and restore crash detection dialog
Address 29 issues found in comprehensive API/spec audit:
- Fix .desktop Exec key path escaping per Desktop Entry spec
- Fix update dialog double-dispatch with connect_response
- Fix version comparison total ordering with lexicographic fallback
- Use RETURNING id for reliable upsert in database
- Replace tilde-based path fallbacks with proper XDG helpers
- Fix backup create/restore path asymmetry for non-home paths
- HTML-escape severity class in security reports
- Use AppStream <custom> element instead of <metadata>
- Fix has_appimage_update_tool to check .is_ok() not .success()
- Use ListBoxRow instead of ActionRow::set_child in ExpanderRow
- Add ELF magic validation to architecture detection
- Add timeout to extract_update_info_runtime
- Skip symlinks in dir_size calculation
- Use Condvar instead of busy-wait in analysis thread pool
- Restore crash detection to single blocking call architecture
2026-02-27 22:48:43 +02:00
lashman
e9343da249 Fix 29 audit findings across all severity tiers
Critical: fix unsquashfs arg order, quote Exec paths with spaces,
fix compare_versions antisymmetry, chunk-based signature detection,
bounded ELF header reads.

High: handle NULL CVE severity, prevent pipe deadlock in inspector,
fix glob_match edge case, fix backup archive path collisions, async
crash detection with stderr capture.

Medium: gate scan on auto-scan setting, fix window size persistence,
fix announce() for Stack containers, claim lightbox gesture, use
serde_json for CLI output, remove dead CSS @media blocks, add
detail-tab persistence, remove invalid metainfo categories, byte-level
fuse signature search.

Low: tighten Wayland env var detection, ELF magic validation,
timeout for update info extraction, quoted arg parsing, stop watcher
timer on window destroy, GSettings choices/range constraints, remove
unused CSS classes, define status-ok/status-attention CSS.
2026-02-27 22:08:53 +02:00
lashman
f87403794e Remove module-wide dead_code allows, annotate individual items instead 2026-02-27 21:05:56 +02:00
lashman
c9f032292a Wire backup, notification, report export, and file watcher modules into UI
- Add export button to security report page (HTML/JSON/CSV via FileDialog)
- Send desktop notifications after security scans when enabled in settings
- Add backup section to storage tab with create/restore/delete and toast feedback
- Start file watcher on launch to auto-refresh library on AppImage changes
- Fix detail view tabs requesting tallest tab height (set vhomogeneous=false)
- Disable tab transitions to avoid visual glitch with variable-height tabs
2026-02-27 21:03:19 +02:00
lashman
df3efa3b51 Switch crash dialog from AlertDialog to Dialog for proper sizing
AlertDialog has an internal width cap that ignores content_width. Use
adw::Dialog instead with a ToolbarView layout for full control over the
900x550 dimensions.
2026-02-27 20:31:03 +02:00
lashman
bb71f5d4d5 Enlarge crash error dialog for better readability
Widen dialog to 700px, increase height to 500px, use wide layout, and
expand the error output scroll area (250-500px) so more of the stderr
text is visible without scrolling.
2026-02-27 20:25:09 +02:00
lashman
d493516efa Add launch crash detection with detailed error dialog, fix all warnings
Detect AppImages that crash immediately after spawning (within 1.5s) by
capturing stderr and using try_wait(). Show a full AlertDialog with a
plain-text explanation, scrollable error output, and a copy-to-clipboard
button. Covers Qt plugin errors, missing libraries, segfaults, permission
issues, and display connection failures.

Move launch operations to background threads in both the detail view and
context menu to avoid blocking the UI during the 1.5s crash detection
window.

Suppress all 57 compiler warnings across future-use modules (backup,
notification, report, watcher) and individual unused fields/variants in
other core modules.
2026-02-27 20:23:10 +02:00
lashman
c9c9c0341b Rewrite detail view copy for beginners, add tab transitions and lightbox fixes
- Replace technical jargon with plain language across all 4 detail tabs
- Friendly titles/subtitles with technical details available in tooltips
- Soften terminal commands ("Install with one command" instead of raw commands)
- Rename sections: Desktop Integration -> App Menu, Sandboxing -> App Isolation,
  Vulnerability Scanning -> Security Check, Capabilities -> Features
- Rewrite Wayland/FUSE explanations to avoid acronyms and dev terminology
- Update security report page with beginner-friendly descriptions
- Enable libadwaita 1.7 ViewStack crossfade transitions between detail tabs
- Rewrite screenshot lightbox as separate gtk::Window (fixes scroll jump on
  close, adds click-outside-to-close, rounded corners via CSS)
- Add prev/next navigation arrows and keyboard support to lightbox
2026-02-27 19:48:59 +02:00
lashman
65a1ea78fe Stop executing AppImages during analysis, add screenshot lightbox and favicons
- fuse.rs: Replace Command::new(appimage_path) with 256KB binary scan for
  runtime detection - prevents apps like Affinity from launching on tile click
- fuse.rs: Read only 12 bytes for Type 2 magic check instead of entire file
- security.rs: Use find_squashfs_offset_for() instead of executing AppImages
  with --appimage-offset flag
- updater.rs: Read only first 1MB for update info instead of entire file
- detail_view.rs: Click screenshots to open in lightbox dialog
- detail_view.rs: Fetch favicons from Google favicon service for link rows
2026-02-27 18:58:12 +02:00
lashman
8362e066f7 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
2026-02-27 18:44:50 +02:00
lashman
1bb7a3bdc0 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
2026-02-27 18:31:07 +02:00
lashman
39b773fed5 Add implementation plan for comprehensive AppImage metadata extraction
Seven tasks covering: quick-xml dependency, AppStream XML parser, DB
migration v9, extended desktop entry parsing, analysis pipeline updates,
and redesigned overview tab with 8 metadata groups.
2026-02-27 18:12:33 +02:00
lashman
fc3ee9ba8f Add comprehensive AppImage metadata extraction design document
Covers all metadata sources from Type 1/2 ELF headers through desktop
entries to AppStream XML, with schema, parser, and UI display plans.
2026-02-27 18:08:24 +02:00
lashman
6526f92a6f Fix icon extraction, drop overlay styling, and card padding
- Fix upsert_appimage returning 0 for existing records by falling
  back to a SELECT query when last_insert_rowid is 0
- Replace --appimage-offset execution with binary squashfs magic scan
  to avoid hanging on AppImages with custom AppRun scripts
- Add 5-second timeout fallback if binary scan fails
- Extract desktop files from usr/share/applications/ for reverse-DNS
  named entries that root-level *.desktop glob misses
- Add root-level png/svg fallback in icon search
- Add CSS for drop overlay scrim, drop zone card, and drop zone icon
- Add card padding (24px 20px) so content does not touch card edges
- Always scan on startup to discover new AppImages
2026-02-27 17:49:04 +02:00
lashman
423323d5a9 Add Phase 5 enhancements: security, i18n, analysis, backup, notifications
- Database v8 migration: tags, pinned, avg_startup_ms columns
- Security scanning with CVE matching and batch scan
- Bundled library extraction and vulnerability reports
- Desktop notification system for security alerts
- Backup/restore system for AppImage configurations
- i18n framework with gettext support
- Runtime analysis and Wayland compatibility detection
- AppStream metadata and Flatpak-style build support
- File watcher module for live directory monitoring
- Preferences panel with GSettings integration
- CLI interface for headless operation
- Detail view: tabbed layout with ViewSwitcher in title bar,
  health score, sandbox controls, changelog links
- Library view: sort dropdown, context menu enhancements
- Dashboard: system status, disk usage, launch history
- Security report page with scan and export
- Packaging: meson build, PKGBUILD, metainfo
2026-02-27 17:16:41 +02:00
lashman
a7ed3742fb Fix GTK CSS warnings and popover cleanup on widget destroy
Remove overflow property from .icon-rounded (not valid in GTK CSS).
Remove prefers-reduced-motion media query (not supported by GTK CSS
engine - reduced motion is handled by gtk-enable-animations setting).
Unparent PopoverMenu on widget destroy to prevent finalization warnings
when library view refreshes.
2026-02-27 11:14:14 +02:00
lashman
33cc8a757a Implement UI/UX overhaul - cards, list, tabbed detail, context menu
Card view: 200px cards with 72px icons, .title-3 names, version+size
combined line, single priority badge, libadwaita .card class replacing
custom .app-card CSS.

List view: 48px rounded icons, .rich-list class, structured two-line
subtitle (description + version/size), single priority badge.

Detail view: restructured into ViewStack/ViewSwitcher with 4 tabs
(Overview, System, Security, Storage). 96px hero banner with gradient
background. Rows distributed logically across tabs.

Context menu: right-click (GestureClick button 3) and long-press on
cards and list rows. Menu items: Launch, Check for Updates, Scan for
Vulnerabilities, Integrate/Remove Integration, Open Containing Folder,
Copy Path. All backed by parameterized window actions.

CSS: removed custom .app-card rules (replaced by .card), added
.icon-rounded for list icons, .detail-banner gradient, and
.detail-view-switcher positioning.
2026-02-27 11:10:23 +02:00
lashman
4f7d8560f1 Add UI/UX overhaul design document 2026-02-27 10:56:02 +02:00
lashman
2f56439b6e Suppress unused warning on announce() accessibility helper 2026-02-27 10:10:21 +02:00
lashman
4b8592801b Update window title dynamically for WCAG 2.4.8 Location compliance 2026-02-27 10:09:31 +02:00
lashman
9c60dfb252 Add WCAG accessible labels and confirmation dialog to duplicate removal 2026-02-27 10:07:34 +02:00
lashman
fae87a753a Add WCAG accessible labels and confirmation dialog to cleanup wizard 2026-02-27 10:07:17 +02:00
lashman
2ea85ac700 Add WCAG accessible labels to preferences buttons and directory list 2026-02-27 10:06:37 +02:00
lashman
1a608c0109 Add WCAG accessible labels to integration dialog list boxes 2026-02-27 10:06:33 +02:00
lashman
1bafb135f0 Rewrite update dialog text to plain language for WCAG readability 2026-02-27 10:06:30 +02:00
lashman
3642fbd542 Add WCAG tooltips and expanded abbreviations to security report 2026-02-27 10:06:21 +02:00
lashman
0aeb445554 Add WCAG tooltips, plain language, busy states, and banner role to detail view 2026-02-27 10:04:46 +02:00
lashman
1ac5f41d69 Add WCAG accessible labels to library view buttons, list box, and search bar 2026-02-27 10:03:28 +02:00
lashman
66fc582cce Add WCAG tooltips for technical terms on dashboard 2026-02-27 10:03:16 +02:00