Files
driftwood/Cargo.toml
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

59 lines
1.1 KiB
TOML

[package]
name = "driftwood"
version = "0.1.0"
edition = "2021"
license = "GPL-3.0-or-later"
[dependencies]
gtk = { version = "0.11", package = "gtk4", features = ["v4_16"] }
adw = { version = "0.9", package = "libadwaita", features = ["v1_7"] }
glib = "0.22"
gio = "0.22"
# Database
rusqlite = { version = "0.33", features = ["bundled"] }
# CLI
clap = { version = "4", features = ["derive"] }
# File hashing
sha2 = "0.10"
# Time
chrono = "0.4"
# XDG directories
dirs = "6"
# Human-readable sizes
humansize = "2"
# HTTP client (sync, lightweight - for update checks)
ureq = { version = "3", features = ["json"] }
# JSON parsing
serde = { version = "1", features = ["derive"] }
serde_json = "1"
# Logging
log = "0.4"
env_logger = "0.11"
# Temp directories (for AppImage extraction)
tempfile = "3"
# XML parsing (for AppStream metainfo)
quick-xml = "0.37"
# Desktop notifications
notify-rust = "4"
# File system watching (inotify)
notify = "7"
# Markdown parsing (for GitHub README rendering)
pulldown-cmark = "0.12"
[build-dependencies]
glib-build-tools = "0.22"