3,365 apps tracked 0 new today 17 updated today Synced 10m ago

AppStream CLI

An utility to work with AppStream metadata

Matthias Klumpp

org.freedesktop.appstream.cli
View on Flathub ↗

AppStream is a metadata specification which permits software components to provide information about themselves to automated systems and end-users before the software is actually installed. The AppStream project provides facilities to easily access and transform this metadata, as well as a few additional services for building feature-rich software centers and similar applications that make use of software metadata.

The appstreamcli command-line tool allows to read, write, and transform AppStream XML or YAML metadata as well as to validate it for compliance with the specification. It also provides easy access to the system metadata pool, for example to query for software that provides a specific Mediatype handler or for installing software by its component identifier.

Observed history

App ChangeVersionWhen ↓

No observed changes yet.

The initial import establishes a baseline. Future version changes will appear here.

Browse the app catalogue →

Upstream releases

Release notes supplied by the developer. These dates are not Flathub package publication times.

1.2.028 Aug 2026

Notes

This release marks the libappstream-compose API as stable.

This release introduces a new, lightly sandboxed (on Linux) media worker for appstream-compose and switches to VIPS for image processing. Please report any issues you may find! The sandbox can be disabled by setting ASC_NO_SANDBOX=1 in the environment. The image formats XPM, TIFF and BMP will no longer be read by Compose, and will be rejected unconditionally.

This release introduces <heading>My headline!</heading> markup for AppStream descriptions. Older versions will remove this markup, so only use it if your target clients have a recent version of AppStream.

Features

  • compose: Create AscMedia for isolated out-of-process media handling using asc-mediaworker
  • compose: Process images, fonts & videos via the media worker
  • Generalize path segment validation, use it in the compose media worker
  • compose: Switch from using GdkPixbuf to VIPS for image processing
  • compose: Harmonize supported formats, don't read XPM/TIFF/BMP
  • compose: Make JPEG-XL the default image output format
  • compose: Implement basic support for FreeBSD
  • compose: Rely on VIPS for SVG support, drop our dedicated librsvg path
  • compose: Make image-targets and image batch-processing public API
  • compose: Expose the source-icon convention and a hint-tag lookup as public API
  • compose: Drop unstable-API marker
  • compose: Don't create image thumbnails that aren't a substantially smaller
  • compose: Only transfer pre-opened fds and no more directory fd to the worker
  • compose: Implement a basic sandbox for the mediaworker using Landlock
  • compose: Use RESTRICT_SELF_TSYNC and block UDP access on newer Landlock
  • compose: Mix the output image format type into the GCID
  • compose: Make AscUnit a proper abstract class
  • compose: Improve API documentation
  • Always sanitize whitespaces in keywords and drop empty ones
  • Assume a language element without percentage means full translation
  • news-to-metainfo: Support a details URL in the YAML variant
  • news-convert: Support inline Markdown in news text
  • news-convert: Support headers in XML<->YAML/NEWS/Markdown conversions
  • ascli: news-convert: Support standalone release XML as source/target
  • Whitespace-sanitize all description markup we read
  • Output descriptions as literals in YAML and wrap markup ourselves

Specification

  • docs: Document the appstreamcli news file conversion helper
  • Implement support for headings in description markup

Bugfixes

  • meson: Set _POSIX_C_SOURCE on Linux only
  • compose: Fix a race where units were deleting each other's icon directories
  • compose: Fix documentation and introspection annotation issues
  • compose: Drop dead public API, make some API private
  • compose: Sharpen with libvips instead of a hand-rolled unsharp mask
  • compose: Only read AVIF from HEIF containers, never HEIC
  • compose: Fix double-free crash when processing fonts
  • compose: Guard against bad locale in path names
  • compose: Ensure component-IDs are safe to use in filesystem paths
  • compose: Escape values for HTML reports, and create proper plain-text if needed
  • compose: Make missing-launchable-desktop-file an error
  • Fix a few translator hints that weren't picked up properly
  • Don't accept empty strings as URLs
  • its: Fix description inline markup translation for release data
  • validator: Fix improper use of variadic arguments
  • validator: Properly validate component-IDs with random UTF-8 characters
  • validator: Abort ID validation after the first invalid character
  • pool: Resolve crash if data locations are changed on a loaded pool
  • Fix wrong string comparison when detecting arm64 machines
  • ascli: Resolve crash when selection is cancelled in install/remove
  • Fix another crash when converting invalid description markup to Markdown
  • apt: Treat icon tarballs as hostile, instead of trusted
  • apt: Fix empty-directory check nuking the icon cache on every refresh
  • utils: Ensure we never ever follow symlinks when recursively deleting caches
  • xml: Only emit description enumerations for locales that are in them
  • cache: Never infinite-recurse when resolving addons for a component
  • yaml: Don't leave old header data around when parsing multiple YAML catalogs

Miscellaneous

  • ci: fedora: Disable cisco-openh264 repo, it's currently broken on rawhide
  • compose: Stop leaking private symbols out of the shared library
  • compose: Make hint tag/severity/explanation setters private API
  • compose: Seal the global settings explicitly on start
  • news-convert: Refactor conversion code for better readability
  • ascli: Refactor subcommand dispatch
  • meson: Disable analyzer-infinite-loop more broadly for static analysis

Contributors

Matthias Klumpp

1.1.612 Aug 2026

Features

  • validator: Ensure description markup has no invalid attributes set
  • validator: Validate bundle/pkgname values for allowed characters

Bugfixes

  • xml: Sanitize description markup when reading and writing it
  • yaml/json: Ensure description markup is sanitized when loading/saving it
  • meson: Work around wrong library linkage when linking Qt tests
  • Allow sealing of component-IDs to safely use them in hash tables and indices
  • Ensure we never emit or read an invalid data origin
  • Prevent crash when comparing bad version strings that have an epoch after rev
  • Fix potential out-of-bounds read in OARS mapping table
  • apt: yaml: Harden against potential corrupted YAML / YAML-headers
  • compose: Guess a filename even from invalid URLs instead of crashing
  • compose: Confine directory unit data reads to the unit's root directory
  • compose: Refactor directory unit to use openat2, if possible
  • news-convert: Don't crash in case we receive bad freeform YAML news input
  • ascli: Guard against bad bundle values when calling "install"

Contributors

Matthias Klumpp

1.1.524 Jul 2026

Features

  • sysinfo: Implement display size detection on macOS

Bugfixes

  • qt: Add back wrong const Component::addBundle for ABI compatibility
  • qt: Use strndup for C string-list conversion
  • pool: Fix bidirectional wildcard search for modalias provides

Contributors

Matthias Klumpp

1.1.422 Jul 2026

Features

  • sysinfo: Assume a more modern display for the handset chassis template
  • sysinfo: Assume a more modern display for the tablet chassis template
  • sysinfo: Initial code to autodetect the display size on Wayland
  • sysinfo: Handle fractional display scaling via xdg-output
  • Implement support for GCVE as vulnerability database provider
  • qt: Sync enum mirrors with the C library
  • qt: Add Artifact, Checksum, Reference, Review and Agreement wrappers
  • qt: Wrap missing C API on existing classes
  • reviews: Add simple interface to fetch ODRS reviews for a component
  • reviews: Implement support for submitting reviews

Specification

  • docs: Suggest using the longest display side for maximum size constraints

Bugfixes

  • Make GResources we need outlive main thread destruction
  • pool: Properly implement cancellation of load operations
  • sysinfo: Fix display-length setter overriding the shortest edge
  • relation-check: Don't zero the score if a required check errored
  • curl: Harden downloader by restricting protocols to only HTTP(S)
  • curl: Allow making POST requests and changing the user agent
  • curl: Fix retry-loop data corruption and don't blindly retry POST requests
  • yaml: Fix potential crashes when encountering missing relation entry values
  • yaml: Adjust tests and emitter to work around libfyaml string-quoting change
  • yaml: Ensure version relations are consistently quoted
  • qt: Fix buffer overrun in stringListToCharArray

Miscellaneous

  • ci: freebsd: Switch from Cirrus to GitHub Actions
  • ci: Update Ubuntu LTS to 26.04

Contributors

Gleb Popov, Matthias Klumpp