Commit Graph

83 Commits

Author SHA1 Message Date
lashman
86b047572a Use relative time for update_checked in detail view 2026-02-28 01:54:51 +02:00
lashman
7697983045 Use relative timestamps everywhere instead of raw date strings 2026-02-28 01:52:56 +02:00
lashman
5254de4a52 Use undo toast for integration removal instead of immediate action 2026-02-28 01:51:40 +02:00
lashman
91882abc3c Consolidate preferences into General and Updates pages 2026-02-28 01:50:38 +02:00
lashman
6a546396ed Show updates-available banner in Installed view 2026-02-28 01:48:50 +02:00
lashman
68918af00a Add Ctrl+1/2/3 keyboard shortcuts for view switching
Register show-installed, show-catalog, and show-updates actions
with Ctrl+1, Ctrl+2, Ctrl+3 accelerators. Update the keyboard
shortcuts dialog to show the new navigation shortcuts.
2026-02-28 01:45:32 +02:00
lashman
4596cce11d Default to Catalog tab when library is empty on first launch
When no AppImages are found in the database, switch the ViewStack
to the Catalog page so users see the discovery experience first.
2026-02-28 01:44:41 +02:00
lashman
7e93f1632e Replace technical jargon with user-friendly labels in detail view
Rename Digital signature to Verified by developer, StartupWMClass
to Window class (advanced), SHA256 to File checksum, and File Type
Associations to Opens these file types.
2026-02-28 01:44:09 +02:00
lashman
e311f6b230 Consolidate detail view from 4 tabs to 2 (About + Details)
Merge Overview into About tab, combine System + Security + Storage
into a single Details tab. Map old GSettings tab names to new ones
for backward compatibility.
2026-02-28 01:42:35 +02:00
lashman
80a81191ab Simplify app card badges, remove colored status borders
Remove status-ok/status-attention colored border classes from cards.
Drop the verbose Wayland badge from cards (detail view handles it).
Merge extract_and_run into the OK FUSE statuses since it works.
2026-02-28 01:41:28 +02:00
lashman
d0291caf75 Show update count badge on Updates tab in ViewSwitcherBar
Add updatable_count() database method and refresh_update_badge()
window method. The Updates tab now shows a numeric badge with the
number of available updates and highlights with needs_attention.
2026-02-28 01:40:22 +02:00
lashman
6adc47a8d3 Slim down hamburger menu, move Preferences to bottom section
Remove Scan, Check for Updates, and Browse Catalog from the hamburger
menu since they are now accessible via the library scan button, Updates
tab, and Catalog tab respectively. Group Preferences with Shortcuts
and About at the bottom.
2026-02-28 01:38:40 +02:00
lashman
df186e74db Improve catalog view with relative timestamps, auto-refresh, and installed badges
Show app count with relative last-refreshed time in subtitle. Auto-refresh
catalog on first visit when empty. Show "Installed" badge on catalog entries
that match already-installed AppImages instead of the Install button.
2026-02-28 01:38:01 +02:00
lashman
46f46db98c Add scan button, sort dropdown, and improved empty state to library view
Add a scan button and sort dropdown (Name A-Z, Recently Added, Size)
to the library header bar. Change the empty state to friendlier text
with Scan and Browse Catalog buttons. Default view mode changed to
list. Sort preference persisted via GSettings.
2026-02-28 01:36:47 +02:00
lashman
b23f9e14f8 Replace single NavigationView with ViewSwitcher (Installed, Catalog, Updates)
Restructure the app from a single NavigationView into an AdwViewStack
with 3 top-level pages: Installed, Catalog, and Updates. Each page
keeps its own header bar while an AdwViewSwitcherBar at the bottom
provides tab-style navigation between them. The Installed page retains
its own NavigationView for detail drill-down. The catalog action now
switches the ViewStack tab instead of pushing a page.
2026-02-28 01:33:43 +02:00
lashman
3eb15af2c6 Add dedicated Updates view with check-now and update-all 2026-02-28 01:26:10 +02:00
lashman
cf8f072820 Add relative_time() helper for human-readable timestamps 2026-02-28 01:24:08 +02:00
lashman
582344ad48 Fix catalog refresh: handle null fields in AppImageHub feed JSON
The AppImageHub feed.json contains null values where arrays/strings are
expected (296 items with null links, 6 items with null inside categories
arrays). Changed AppImageHubItem deserialization to use Option types and
flatten nulls. Also fixed refresh handler to dynamically look up the
catalog source from DB instead of hardcoding id.
2026-02-28 00:46:39 +02:00
lashman
31da61f3da Clean up unused catalog function and wire source info into catalog view 2026-02-28 00:25:05 +02:00
lashman
f12e74ba2b Add AppImageHub in-app catalog browser with search, categories, and install 2026-02-28 00:23:36 +02:00
lashman
2704ebb316 Add similar app recommendations from shared categories 2026-02-28 00:17:55 +02:00
lashman
2108b0f3d8 Add portable mode with removable media detection and scanning 2026-02-28 00:16:52 +02:00
lashman
f2abfba753 Add update-all, autostart, purge, and verify CLI commands 2026-02-28 00:13:31 +02:00
lashman
27eb9f259d Add system-wide installation via pkexec with polkit policy 2026-02-28 00:11:57 +02:00
lashman
c622057830 Add default application selector for browsers, email, and file managers 2026-02-28 00:10:39 +02:00
lashman
585320b363 Add first-run permission summary dialog before launch
Shows what access the AppImage will have on first launch. Lists file,
network, and display server access. Mentions firejail if available.
Tracks prompted status in DB so the dialog only appears once per app.
2026-02-28 00:07:49 +02:00
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