Commit Graph

86 Commits

Author SHA1 Message Date
lashman
4b939f044a Add AppImageHub.com OCS API as primary catalog source
Integrate the Pling/OCS REST API (appimagehub.com) as the primary catalog
source with richer metadata than the existing appimage.github.io feed.

Backend:
- Add OCS API fetch with pagination, lenient JSON deserializers for loosely
  typed numeric fields, and non-AppImage file filtering (.dmg, .exe, etc.)
- Database migration v17 adds OCS-specific columns (ocs_id, downloads, score,
  typename, personid, description, summary, version, tags, etc.)
- Deduplicate secondary source apps against OCS entries
- Shrink OCS CDN icon URLs from 770x540 to 100x100 for faster loading
- Clear stale screenshot and icon caches on sync
- Extract GitHub repo links from OCS HTML descriptions
- Add fetch_ocs_download_files() to get all version files for an app
- Resolve fresh JWT download URLs per slot at install time

Detail page:
- Fetch OCS download files on page open and populate install SplitButton
  with version dropdown (newest first, filtered for AppImage only)
- Show OCS metadata: downloads, score, author, typename, tags, comments,
  created/updated dates, architecture, filename, file size, MD5
- Prefer ocs_description (full HTML with features/changelog) over short
  summary for the About section
- Add html_to_description() to preserve formatting (lists, paragraphs)
- Remove redundant Download link from Links section
- Escape ampersands in Pango markup subtitles (categories, typename, tags)

Catalog view:
- OCS source syncs first as primary, appimage.github.io as secondary
- Featured apps consider OCS download counts alongside GitHub stars

UI:
- Add pulldown-cmark for GitHub README markdown rendering in detail pages
- Add build_markdown_view() widget for rendered markdown content
2026-02-28 20:33:40 +02:00
lashman
f89aafca6a Add GitHub metadata enrichment for catalog apps
Enrich catalog apps with GitHub API data (stars, version, downloads,
release date) via two strategies: background drip for repo-level info
and on-demand fetch when opening a detail page.

- Add github_enrichment module with API calls, asset filtering, and
  architecture auto-detection for AppImage downloads
- DB migrations v14/v15 for GitHub metadata and release asset columns
- Extract github_owner/repo from feed links during catalog sync
- Display colored stat cards (stars, version, downloads, released) on
  detail pages with on-demand enrichment
- Show stars and version on browse tiles and featured carousel cards
- Replace install button with SplitButton dropdown when multiple arch
  assets available, preferring detected architecture
- Disable install button until enrichment completes to prevent stale
  AppImageHub URL downloads
- Keep enrichment banner visible on catalog page until truly complete,
  showing paused state when rate-limited
- Add GitHub token and auto-enrich toggle to preferences
2026-02-28 16:49:13 +02:00
lashman
92c51dc39e Add Launch and Uninstall buttons to detail view header 2026-02-28 01:56:21 +02:00
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