Version 1.0.3 ~~~~~~~~~~~~~~ Released: 2024-04-24 Features: * validator: Check that description lists don't get translated * validator: Improve translation checks for descriptions * cli: compose: Allow to propagate selected custom entries to catalog output * validator: Check for common typo of "scheme_preference" branding property * xml: Generate a developer_name compat tag for older 3rd-party parsers * validator: Flag duplicate branding colors as invalid * Add Plasma Mobile as recognized desktop-style Specification: * docs: Clarify a developer element is not allowed to exist multiple times * docs: Explicitly clarify a developer/name element must not be repeated * docs: Clarify metainfo translation rules a bit Bugfixes: * qt: Fix relocation of Config.cmake files * cli: check-syscompat: Recognize available required controls as available * validator: Guard issue emission functions with G_GNUC_PRINTF * validator: Always use secure string formatting for issue emit function * utils: Explicitly set format style when installing catalog metadata * Suppress static-analyzer drawing wrong conclusions on GCC 14 Miscellaneous: * docs: List AppStreamCompose as related to AppStream * docs: Add manpages back * validator: Mark developer-id-missing as info-priority again Contributors: JakobDev, John Zimmermann, Matthias Klumpp, Max Buchholz, tytan652 Version 1.0.2 ~~~~~~~~~~~~~~ Released: 2024-02-24 Features: * qt: Allow building for multiple Qt major versions at once * Improve low-quality category check and extend its blacklist * validator: Add some limited developer-ID validation * validator: Emit an overridable warning if homepage URL was omitted * compose: Allow rendering vector graphics to HiDPI bitmaps unconditionally * compose: Allow setting a custom icon-policy on the command-line Specification: * docs: Mention that tag can be translated * docs: Generate validation issue tag documentation from code * docs: Add information on how to exclude elements from translation * spec: Recommend using rDNS strings or Fediverse handles as developer-ID * spec: Make launchable requirement for desktop-apps more strict Bugfixes: * qt: Component::customValue should be const * validator: Remove mention of shorthands from relation-display-length-value-invalid * sysinfo: Swap arguments of g_pattern_match_simple * qt: Add missing screenshot sorting function * qt: pool: Add missing Q_EMIT keyword * validator: Improve error message if no valid categories were found * validator: Make some length limitations more strict * validator: Only emit developer-name-tag-deprecated once * validator: Ensure filename is properly included in location info again * validator: Improve error reporting on images with missing/bad locales * compose: Don't accidentally set icon scale to 0 in some cases * compose: Add heuristics to show out-of-scope errors if filters were set * Don't prematurely abort URL validity check during semi-large redirects * docs: Update supported hashsums to reflect reality * docs: Describe version comparison letters special case * docs: Clarify release descriptions *must not* contain embedded URL * docs: Explicitly mention /var/cache/swcatalog is a valid catalog data location * tests: Fix tests with old & new FontConfig * its: Allow untranslatable developer/name and agreement sections Miscellaneous: * compose: Clarify that "no valid category" can mean bad ones were ignored * news-convert: Don't strip out the last text in brackets Contributors: Aleix Pol, Alexander Wilms, Fabio, Kolja, Matthias Klumpp, Patrick, ratijas Version 1.0.1 ~~~~~~~~~~~~~~ Released: 2023-12-16 Bugfixes: * Fix lib name for Qt5 link target * meson: Pass -D_DARWIN_C_SOURCE on darwin * Fix macOS build * stemmer: Resolve potential issue where stemmer may never be initialized * cli: Don't fail what-provides if components were found * Fix query element order for what-provides queries * validator: Demote developer-name-tag-deprecated to info severity for now * content-rating: Fix missing or wrong value descriptions for rating IDs * curl: Add transfer speed timeouts for HTTP downloads * curl: Retry operations on potentially transient errors Miscellaneous: * validator: Improve hint for content-attribute-value-invalid * Allow building without zstd temporarily Contributors: Antonio Rojas, Bobby Rong, Matthias Klumpp, Rui Chen Version 1.0.0 ~~~~~~~~~~~~~~ Released: 2023-11-11 Notes: * This version breaks API and bumps the SONAME of libappstream! Applications using AppStream will have to be ported to the new API. The 1.0 release is coinstallable with the stable 0.16.x series. Features: * Autoformat C and C++ sources * Remove all deprecated symbols * Drop support for many deprecated AppStream XML features * Use GPtrArray to expose keywords list * Add length argument to raw metadata parsing functions * Add component array container class * Remove named values for display_length relations * Make AsPool only accept/return component boxes * Port all API away from per-entity locale overrides * Reduce appstream.conf to its essentials, make it work on stateless systems * Hide search engine details from public API * Wrap release entries in AsReleaseList container class * Make AsMetadata handle AsReleaseList objects * Refactor is_satisfied result into new RelationCheckResult class * Add a method to check all relations of a component and get the result * Add algorithm to score compatibility with a system, add chassis templates * ascli: Add new check-syscompat command to check chassis compatibility * Implement environment property for component screenshots * Autogenerate translatable DE and gui-environment-style C arrays * Expose more advanced markup conversion function, update function names * Allow BLAKE3 and SHA512 checksums for release artifacts * Stop supporting mailto: URLs in tags * validator: Improve API and simplify it * validator: Parse XML in pedantic mode when validating * validator: Check screenshot environment property * validator: Only apply summary-has-dot-suffix check to untranslated strings * compose: Allow creating metadata with complete URLs and no base URL * spdx: Add API to retrieve a translated license name from an SPDX ID * qt: Switch to building with Qt6 * qt: Make it possible to iterate ComponentBox * qt: Implement AppStream::ComponentBox::erase * qt: Allow concatenating two ComponentBoxes * qt: Allow loading Pool asynchronously * qt: Use ComponentBox/Releases in Qt bindings as well * qt: Add support for the new API to check relation satisfaction * qt: Maintenance and namespace fixes, use cPtr() to get C pointers everywhere * bundle: Add linglong as a new type of bundle * Add GUI environment IDs for macOS and Microsoft Windows * validator: Check if Release Description is inside description tag * validator: Add validation for content_rating * Add support for building on Win32 * win32: change some file/path-related code for portability * Implement the developer element for unique developer IDs * Implement scaling factor for screenshots * component-box: Allow removal of components by-index * Implement support for external references and citations * Implement usertags for release data as well * Move ValueFlags to the context, instead of tieing them to components * pool: search: Add additional weight for exact substring matches on names * sysinfo: Add memory size detection support for macOS * Add support for Zstd for on-disk data compression * utils: Make tar unpacker independent of zstd binary presence * Drop Python2 provided tag support * data: Add ‘Endless’ to the list of desktops * Add NetBSD support Specification: * Drop (most) deprecated information * docs: Clarify environment-based screenshot ordering * Add new 'snapshot' release kind * docs: Build all API documentation with gi-docgen * spec: Document the new "developer" element * spec: Document the "reference" tag for registry references * docs: Add example of YAML for references elements * Allow hyphens in the last segment of a component-ID * docs: Drop outdated information from l10n quickstart guide Bugfixes: * meson: check for docbook xsl stylesheets * Fix tweaking of appstream.pc when building as subproject * Fix crash in asc_l10n_search_translations_qt() * qt: Make Qt6 dependency a system dependency. * meson: do not rely on an exe wrapper * meson: do not -I/usr/include when !stemmer * meson: Prevent building attempts with MSVC * meson: Use an SPDX license indentifier in project(license:) * Add meson overrides * compose: Set lower-cased CID for synthesized components again * compose: Set lower-cased CID in desktop-entry parse function * compose: Honor prefix in font search * compose: Select the correct default icon glyphs for fonts * Don't crash when non-YAML documents are read as YAML * Do not override default-priority when parsing multiple metadata files * Ensure stemmer always has the right locale and token-search works * Require a more recent libxmlb to avoid crashes * Rename component get_releases to indicate that releases may not be loaded from the web * Prevent string-id validation functions from matching source comments * Don't define _POSIX_C_SOURCE when building for NetBSD Miscellaneous: * Explain metainfo-ancient error in more detail * Make sed invocation more portable * Add FreeBSD CI * Allow variable shadowing in C++ code * Drop the catchall as-enums unit * vapi: Drop unneeded metadata * Make AsMetadata return a component box for multiple components * apt: Make item descriptions more human-friendly * Streamline README Contributors: Aleix Pol, Alessandro Astone, Alexander Wilms, Dan Yeaw, Daniel Drake, Gary Wang, Gleb Popov, Ingo Klöcker, JakobDev, Jeremy Whiting, Kai Uwe Broulik, Marc-André Lureau, Matthias Klumpp, Philip Withnall, Tao Zuhong, Thomas Klausner, Tristan Partin, and thanks to all translators mentioned in the respective l10n files! Version 0.16.4 ~~~~~~~~~~~~~~ Released: 2023-11-10 Features: * Allow hyphens in the last segment of a component-ID * Implement the developer element for unique developer IDs * Add meson overrides Bugfixes: * meson: Prevent building attempts with MSVC * meson: Avoid potentially bad sed backup filename when fixing .pc file Miscellaneous: * Make sed invocation more portable Contributors: Gleb Popov, Matthias Klumpp, Tristan Partin Version 0.16.3 ~~~~~~~~~~~~~~ Released: 2023-08-22 Features: * compose: Allow creating metadata with complete URLs and no base URL Bugfixes: * Fix tweaking of appstream.pc when building as subproject * Do not override default-priority when parsing multiple metadata files * Ensure stemmer always has the right locale and token-search works * Require a more recent libxmlb to avoid crashes Miscellaneous: * Work around invalid null-dereference warning in GCC 13 Contributors: Daniel Drake, Matthias Klumpp Version 0.16.2 ~~~~~~~~~~~~~~ Released: 2023-04-26 Notes: * Due to a past mistake, AppStream until now assumed xml:lang was using POSIX locale, while in fact XML locale need to be in BCP47 format. Most of the translation tools do this correctly, but notably msgfmt when used in batch mode doesn't (which affects anything using Meson's i18n module). AppStream is now behaving according to spec, with some fallback code in place, but please check your XML is translated correctly to ensure all translations are visible. Features: * Add API for asking whether the pool is empty * Add DDE to known desktop-environment list * validator: Check if Release Description is inside description tag * Make AppStream use BCP47 for locale in XML data Bugfixes: * Add missing standard::is-hidden attribute to file search enumerator * spdx: Accept brackets in spdx license expression check * introspection: Bring back AS_FORMAT_STYLE_COLLECTION into its enum * compose: Fix crash in asc_l10n_search_translations_qt() * compose: Set lower-cased CID for synthesized components again * Don't crash when non-YAML documents are read as YAML Miscellaneous: * sanitizers: Allow null-dereference check again Contributors: Aleix Pol, Caolán McNamara, Corentin Noël, Gary Wang, Gleb Popov, JakobDev, Matthias Klumpp, Will Thompson Version 0.16.1 ~~~~~~~~~~~~~~ Released: 2023-02-10 Notes: * This is a bugfix-only release to primarily address an issue introduced in v0.15.6 that caused any clients using GIR bindings to crash after a while. Specification: * docs: Clarify the locations where catalog icons should be placed * spec: Expand documentation for elements * spec: Mention that is not part of the description * spec: Give some guidance about tone in release descriptions Bugfixes: * Fix binding helper macro to behave correctly if a function is passed directly * Override-merge icons and provided items correctly * tests: Ensure locale is C.UTF-8 in pool tests Miscellaneous: * release: Add sanity checks at beginning of each function Contributors: Corentin Noël, Matthias Klumpp, Pablo Correa Gómez, Philip Withnall Version 0.16.0 ~~~~~~~~~~~~~~ Released: 2023-01-26 Features: * pool: Offer API to look up components by bundles * Bump format version to 0.16 * Add new AsSystemInfo to read information about the current OS and device * Add helper to get device names from a modalias * Implement support for external release metadata * Add validation support for external release metadata * compose: Validate external release metadata used for the catalog as well * its: Add rule for standalone release metadata * Add function to test if an AsRelation is satisfied on the current system * cli: Add command to list category contents * cli: Display colored checkmarks if possible * cli: Add new is-satisfied check to test relations from the command-line * cli: Add Markdown export support for metainfo-to-news * qt: Add support for SystemInfo & relation satisfication checks Specification: * spec: Specify a metadata format for external release descriptions Bugfixes: * Fix build with Clang 15 * Give a better error message if trying to list too many categories * Adjust documentation of AsPool.get_components_by_categories to reflect reality * validator: Validate merge component catalog data properly again Miscellaneous: * Consistently name catalog metadata as such everywhere Contributors: Aleix Pol, Matthias Klumpp, Rafael Fontenelle Version 0.15.6 ~~~~~~~~~~~~~~ Released: 2022-12-22 Features: * qt: Add API for ContentRating descriptions and ratingIds * Add some coccinelle semantic patches for common style issues * compose: Allow building without SVG support (for bootstrap only) * validator: Check for nodes that are text nodes even though they shouldn't be * validator: Extend validation for custom tag * validator: Improve Screenshot validation Specification: * docs: Fix typos in documentation Bugfixes: * validator: internat: Don't allow bandwidth_mbitps when value is offline-only * validator: Fix timestamp validation * validator: Allow release descriptions to start with punctuation * compose: Only add no-metainfo tag if component isn't already ignored * compose: Show better error in AscImage if compose was build without rsvg * Add a hack to clarify proper PtrArray element ownership for language bindings * qt: Port away from deprecated QDateTime API * qt: Deprecate Component::requires * qt: Fix warning * qt: Fix stringListToCharArray and Pool::componentsByCategories * qt: Port away from deprecated foreach * as-review: Add a typedef for property enums * as-review: Install properties at once rather than individually * as-review: Specify G_PARAM_STATIC_STRINGS for properties * as-review: Emit GObject::notify on property value changes * as-review: Add missing property for as_review_{get,set}_priority() * ascli: fix NULL pointer dereference Miscellaneous: * docs: Split releases specification into its own section * style: Make code easier to read by using helper macros in all places * Make some compiler warnings fatal unconditionally Contributors: Aleix Pol, JakobDev, Matthias Klumpp, Nicolas Fella, Philip Withnall, r-ricci, Will Thompson Version 0.15.5 ~~~~~~~~~~~~~~ Released: 2022-08-22 Features: * validator: Allow severity downgrade of releases-not-in-order for GNOME * validator: Perform stricter integer validation * validator: Check for url redefinitions * Implement the "replaces" tag * Add convenience function that check if component is free by license and origin * qt: Add wrappers for AsComponent isFree/supports/replaces * Always add untranslated component names to the search index * validator: Validate the "internet" relation item * validator: Add validation for memory relation * Implement internet relation item Specification: * spec: Specify a proper "replaces" tag * spec: Add an kind to requires/recommends/supports Bugfixes: * validator: Don't permit overriding the unknown root tag issue * compose: Don't crash if metainfo file contains an invalid stock icon * spdx: Fix possible crash when NULL is passed to is_free_license * compose: Don't synthesize components for desktop files of settings apps * Return the correct values in as_display_length_kind_from_px() * validator: Distinguish translatable from not-translatable tags in duplicate checks Miscellaneous: * Silence static analyzer false-positives based on GCC version * data: use lxml to get the XDG categories Contributors: JakobDev, Philip Withnall, Pino Toscano, Matthias Klumpp Version 0.15.4 ~~~~~~~~~~~~~~ Released: 2022-05-22 Features: * validator: Check timestamp validity * validator: Allow (limited) overriding of issue tag severities * validator: Add strict mode * ascli: validate: Allow simple overriding of issue tags * validator: Check for exact relation item redefinitions Bugfixes: * Add vcs-browser URL to metainfo.xml * compose: Improve media-baseurl sanity checks for icon/screenshot policies * compose: Don't create bad data when localized screenshots exist * compose: Sanitize prefix value and verify all units for results * compose: Fail and not just warn if we couldn't open a unit * compose: Make no-result detection a bit more robust * compose: Properly handle localized screenshots * compose: Ignore current locale when analyzing screencasts Contributors: JakobDev, Matthias Klumpp Version 0.15.3 ~~~~~~~~~~~~~~ Released: 2022-04-10 Features: * qt: Include enums for VcsBrowser and Contribute * Add vcs-browser and contribute URL type * validate: Improve validation of desktop files alongside metainfo data * its: Mark deprecated rules as deprecated * Implement l10n support for metainfo keyword tags * validator: Perform basic validation of keywords in metainfo data * compose: Prefer metainfo keywords over desktop-entry keywords * meson: Bump minimum version to 0.62 Specification: * docs: Document keywords for metainfo files as well * docs: Spell it metainfo, not meta-info if referencing metainfo.xml files * spec: Document how keywords in metainfo files should be translated Bugfixes: * qt: If the timestamp is 0, return a default QDateTime() * docs: Include compose manual page * validate: Point at the right line for description-enum-item-invalid * validator: Find data if /usr prefix is missing as well * validator: Make insufficient launch data for desktop-apps a hard error * Don't fail downloads or URL checks if redirects were involved * apt: Only refresh the OS data cache (not the whole system cache) on APT update * compose: Emit error if filters are set but no output was generated * Centralize GOnce guard to fix an assertion failure in AsComponent Contributors: Aleix Pol, JakobDev, Matthias Klumpp, Simon McVittie Version 0.15.2 ~~~~~~~~~~~~~~ Released: 2022-02-22 Features: * compose: Allow setting a custom CAInfo file * qt: Always use C library for enum-to-string conversions * compose: Allow any amount of release entries for OS components * compose: Implement more flexible icon policy * validator: Ensure component-ID has no punctuation prefix * validator: Check existence of version and date release properties * Implement component-wide end-of-life date attribute * compose: Build API documentation * Relicense remaining GPL-2.0 code to LGPL-2.1+ * No longer mark compose build option as experimental * Support the new swcatalog catalog metadata location and add app-info fallback * When finding components by ID, use provided IDs if no exact matches were found * ascli: Fix install/remove commands, add Flatpak support * Implement XML & YAML read/write of the "branding" tag group * Handle embedded lists in YAML release info paragraphs Specification: * spec: Specify a "date_eol" property for the component itself * spec: Specify the new "branding" tag * docs: Update links to API reference pages * spec: Require that branding colours start with a hash symbol * docs: Clarify license and ship license copies * docs: Document media_baseurl property of components Bugfixes: * qt: Fix crash when moving a Component * qt: Fix translate URL string<->enum conversion * qt: Deprecate mistyped UrlTranslate enum value * Filter out components without ID as early as possible (resolves crash) * Don't terminate the client if we can't get a writable cache location * Fix a possible parsing crash when converting markup * ascli: Display better messages if appstream-compose is unavailable * Install new collection XML to the right location * compose: Skip further processing if component was already dropped * compose: Fix SVG scaling with librsvg 2.52 * compose: Handle missing export paths gracefully * Replace symlink hacks with new Meson install_symlink function * ci: Drop outdated libsoup dep Contributors: Aleix Pol, fortysixandtwo, JakobDev, Jan Alexander Steffens, pabloyoyoista, Phaedrus Leeds, Philip Withnall, Matthias Klumpp Version 0.15.1 ~~~~~~~~~~~~~~ Released: 2021-12-22 Features: * Bump GLib version requirement to >= 2.62 * compose: Port over font support from appstream-generator * compose: Allow overriding unit used for locale processing * compose: Refine legacy support for desktop-id launchables * compose: Allow setting the custom desktop-entry translation function * compose: Allow to run with threading (mostly) disabled * compose: Reorganize feature flags, allow to disable l10n * compose: Allow setting a screenshot file size limit * compose: Allow to disable screencast processing explicitly * compose: Allow to test whether result has a specific hint tag * news-convert: Support a "Translators" section * validator: Check that first rDNS component-ID parts are always lowercased * validator: Validate capitalization for some selected text blocks Bugfixes: * vapi: Rename PoolFlag to PoolFlags to add the missing deprecated flags * Fix cache always getting updated even if unnacessary on Debian systems * Still verify download return codes if download was aborted intentionally * compose: Warn if metainfo files are missing and data was processed anyway Contributors: Corentin Noël, Matthias Klumpp Version 0.15.0 ~~~~~~~~~~~~~~ Released: 2021-12-02 Notes: * This release contains a complete rewrite of AppStream's caching code, making use of libxmlb instead of LMDB now. This will allow for more complex queries and simplifies the caching code a bit. As part of this change, AsPool is now quite a bit more powerful in what it can do. * Caches are now always shared between applications, client-specific caches do no longer exist. If requested, an AsPool can now also transparently reload metadata in the background in case it changes on disk. * A few new tags have also been added, most notably "supports" for indicating hardware or input support. Features: * Refactor the caching code and partition cache into sections * cli: Display nicer status information when refreshing caches * cli: Allow limiting refresh action to data from certain groups * Allow clients to configure the addon autoresolve magic * Allow clients to control the local metainfo preference * qt: Add wrappers for new AsPool API * Add directory monitoring helper for AsPool * Add an auto-reload mechanism to refresh cache sections when data changes * Implement support for a "supports" relation kind * qt: Wrap the AsPool ::changed signal * qt: Add version test macro for Qt library as well * cli: Make validator output a bit nicer * cli: Base "status" command on metadata source layout from AsPool * Implement the new "Tags" tag * Make component-ID search case-insensitive Specification: * spec: Add a "supports" relation type * Add support for specifying a graphics tablet as input control method * Add support for the "hardware" relation item * spec: Add "tags" tag for tagging components * apidoc: Document file not found error code * docs: Fix various typos and grammar issues Bugfixes: * compose: Adjust to rsvg API changes * qt: Pass NULL to C function when overriding cache location with empty string * tests: Make unit tests clean up temporary caches if possible * qt: Align API deprecations with C library API * Cache Flatpak data properly, and add some quirk fixes for it * file-monitor: Explicitly cancel GFileMonitor before unreffing it * Fix broken markup by using itstool to generate final translated metainfo * validator: Fix some issues pointing at the wrong node * validator: Validate the "tags" tag group Contributors: Phaedrus Leeds, Matthias Klumpp Version 0.14.6 ~~~~~~~~~~~~~~ Released: 2021-10-08 Features: * validator: Allow slightly longer screenshot captions * news-to-metainfo: Recognize the "Miscellaneous" section * ascli: Add check-license command to test license for compatibility * Emit URLs to choosealicense.com for certain popular licenses * Add manually curated list of DFSG-free licenses * news-to-metainfo: Allow only marking the last entries as translatable * compose: Add support for image and video screenshot handling * news-to-metainfo: Parse hyphens as header separators as well * ci: Add Fedora to the CI environment * as-translation: Add a new source-locale property * compose: Support source locales for translations Specification: * docs: Clarify screenshot image/video dimensions, quickstart recommendations * docs: Clarify image scaling, drop fixed-size image width recommendation * spec: Mention the already-supported scale attribute of * spec: Add support for source locales Bugfixes: * cli: Properly forward parameters to compose binary when invoked via ascli * compose: Don't follow symlinks when processing raw directories * xml: Make NULL value handling for RefString value readers consistent * news-to-metainfo: Stop parsing data if we have reached our entry limit * news-to-metainfo: Don't attempt to override existing error on parsing failure * compose: Extract screenshot image dimension data even if we're not caching them * curl: Use less memory when downloading large files Contributors: Neal Gompa, Philip Withnall, Matthias Klumpp Version 0.14.5 ~~~~~~~~~~~~~~ Released: 2021-08-28 Features: * compose: Add locale statistics reader * Add installed test to validate all metainfo data on the system * compose: Add initial compose utility * compose: Read SVGZ images in AscImage * compose: Better heuristics for finding KDE icons * compose: Allow filtering which components are processed * compose: Allow exporting hint report as YAML * cli: convert: Autodetect metainfo/collection XML files * Add documentation for appstreamcli compose * validator: Nag about missing content_rating and releases * compose: Add metainfo file for cli utility Specification: * docs: Clarify how Qt translations are searched for * spec: Use "i386" as arch name for the shared ABI of all 32-bit x86 CPUs * spec: Remove debshots screenshots API references * docs: Document the version comparison algorithm Bugfixes: * qt: Make Pool's parent class public * Use locale_strip_encoding for determining the current locale as well * Consider locale like "ca@valencia" compatible with "ca" * validator: Properly emit some invalid tag name messages * Resolve g_memdup deprecation warning for GLib >= 2.68 * cli: Don't occasionally remove spaces when wrapping words * Propagate bundle information even if PreferLocalMetainfoData is True * Add workaround for GIR inconsistency in AsFormatVersion enum * Add assertion against as_get_resource() returning NULL * context: Don't initialize filename ref string value Contributors: Aleix Pol, Matthias Klumpp Version 0.14.4 ~~~~~~~~~~~~~~ Released: 2021-06-22 Features: * qt: Expose setter and getter for pool cache location * utils: Use GLib's gstring_replace if available * its: Allow to mark release descriptions as non-translatable * compose: Point people at the specification if metadata license is invalid Specification: * docs: Clarify which metadata licenses are permitted * docs: Fix a typo on the icon cache page * spec: Add a paragraph about which license to put in * Add documentation for YAML release type and urgency * Add documentation for YAML provides Bugfixes: * component: Don't strip ";" from keywords before translating them * utils: Don't strip modifiers when stripping encoding * compose: Check optipng is there before we use it * Improve text line wrapping, especially if many newlines are present * Make word-wrap function unicode-aware * Make license_is_metadata_license parse more complex expressions * Improve cache refresh code, don't flag cache as updated if update failed * Use system cache even if we had to drop some invalid metadata * Assign more string class members safely * Fix flashed firmware generating incorrect XML * Fix YAML having wrong names for the firmware data Contributors: Aleix Pol, Iain Lane, Philip Withnall, Robert Ancell, Matthias Klumpp Version 0.14.3 ~~~~~~~~~~~~~~ Released: 2021-03-08 Specification: * spec: Mention that license-IDs are case-sensitive * spec: Fix case of LicenseRef-proprietary in the spec Bugfixes: * compose: Don't loop endlessly if external desktop l10n function is set * Never create a predictable dir in /tmp for caching Contributors: Philip Withnall, Matthias Klumpp Version 0.14.2 ~~~~~~~~~~~~~~ Released: 2021-03-02 Features: * qt: Implement missing Pool::componentsByCategories * Share one user-owned read-only system metadata cache between all applications * pool: Clean up user sysdata caches if we start to use the system cache * Port over some parsing improvements for desktop-files from asgen * compose: Add helper for reading desktop-entry files * compose: Handle bad UTF-8 in desktop-entry files even better * search: Perform partial token matches instead of prefix matches * search: Unconditionally perform partial term matching after exact matching * news-to-metainfo: Recognize the "Contributors" section * Update our own metainfo file for appstreamcli Bugfixes: * Read descriptions from collection XML correctly again * tests: Fix a few memory leaks * Make people acknowledge they know the ascompose API is unstable * search: Make whole-search string matching a lot more strict * validator: Resolve false-positive when testing remote icon URL validity * utils: Improve textwrap if text is just one excessively long word * compose: Permit U+00AD SOFT HYPHEN in string values * Validate our own metainfo file * compose: Don't assume lowest priority for desktop-entry-only components * search: Only replace full words with greylist terms, not partial ones * ascli: Take all positional parameters as search terms when searching Version 0.14.1 ~~~~~~~~~~~~~~ Released: 2021-02-16 Features: * Switch back from Soup to cURL for HTTP(S) (Matthias Klumpp) * validator: Check a few more things on requires/recommends items (Matthias Klumpp) * Only download the first bytes of a file when checking URLs for validity (Matthias Klumpp) Specification: * spec: Officially mark tag as deprecated (Matthias Klumpp) Bugfixes: * qt: Return better errors in AppStream::Metadata (Matthias Klumpp) * Do not automatically clean up errors that will be propagated (Matthias Klumpp) * Remove overall extern "C" to make very new (2.67+) GLib versions happy (Matthias Klumpp) * ascli: Don’t use GNU C extension type names (Philip Withnall) * build: Use c11 rather than gnu11 and define vendor extensions separately (Philip Withnall) Version 0.14.0 ~~~~~~~~~~~~~~ Released: 2021-02-02 Notes: * Component data-IDs gain a fifth part for a "branch". If you parse the IDs with AppStream's functions, this change is fully backwards compatible. If you do your own parsing of these IDs, please check if you have 4-part or 5-part IDs and split accordingly. The branch is not used by AppStream (it is just passed through), but needed in GNOME Software for Flatpak and Snappy support. * AppStream-Generator depends on libappstream-compose now, however the API is still not stable, so please do not use it unless you either are appstream-generator or like using experimental code. Features: * news-to-metainfo: Interpret placeholder release dates as denoting a dev version * Make as_utils_build_data_id public API * Add AsReview for attaching user reviews to software components * Add compile-time version test macros * Add a branch element to component data-IDs * Add branch property to AsComponent * utils: Add data-ID hashing and matching functions * utils: Make as_gstring_replace public API * Add branch info to on-disk cached components * content-rating: Add as_content_rating_add_attribute API * Rename INPUTMETHOD component kind enum to INPUT_METHOD * Add "cabinet" bundle type for firmware deployments * Make AsTokenMatch public API * Add function to AsScreenshot to get image closest to preferred size * Allow AsComponent to directly ingest desktop-entry data * Make as_pool_build_search_tokens API public * Add "origin" token match * Make as_component_add_provided_item API public * Add some useful image dimension constants * compose: Add blur function from asglib * Add more efficient load_from_bytes method to AsComponent * Add methods to load metadata directly from GBytes * compose: Make image loading code more versatile * Add editorconfig * Make more use of RefString in AsComponent * Revamp version comparison algorithm * ascli: Add native profiling support * compose: Reduce Hint memory usage, allow to retrieve var list * compose: Allow clients to add their own, new hint tags * compose: Allow hints to be created from tags, include validator hints in pool * compose: XML-escape validator explanations * compose: Add a few more methods from asgen's GeneratorResult * compose: Add helper method for metainfo validation * compose: Add metainfo parsing helper function * Implement "filename" property for release artifacts * ascli: Add new `os-info` subcommand * Add code to validate platform triplets * validator: Validate more release-tag specific issues * Add utils helper function to install a variety of metadata * Improve desktop-entry tests, always add "launchable" tag * Update AppStream format version * qt: Add bindings for relations API (requires/recommends) * Use ref-strings for locale hash tables and token tables Specification: * docs: Update revision and date * spec: Add "cabinet" bundle type for firmware deployments * spec: Allow "filename" tag in release artifacts * docs: Clarify section on release artifact platform triplets * spec: Properly mark mailto: links in contact URLs as deprecated Bugfixes: * parse-desktop: Do not try to propagate a null error (Aleix Pol) * Retain loaded context in AsMetadata and allow external media base url changes * meson: Use project arguments instead of global arguments * ascli: Improve text reflow in console output * metainfo-to-news: Use "*" instead of "-" for markdown enumerations * Drop unneeded compiler warning override * Fix small memory leak in AsTranslation * Avoid extra strlen() call when loading metadata from file * Fix a few more memory leaks * validator: Add some more tests * ascli: Remove some code duplication, improve help summary text * meson: Hardcode less paths * tests: Add version comparison tests from appstream-glib, to ensure we compare the same * gir: Ensure as_version_string shows up in introspection data * ascli: Improve display of indented long-text output * compose: Fix build with GLib < 2.66 * Make sure there are no duplicate operating-system components * compose: Ensure font selection for symbolic fonts actually works * validator: Ensure we return false in API functions if validation failed * Ignore minimal translations in metainfo description texts Version 0.13.1 ~~~~~~~~~~~~~~ Released: 2020-11-30 Bugfixes: * Install enum types headers to the right location * qt: Construct library using libappstream dependency object * validator: Improve check for invalid hyperlinks to reduce false-positives Version 0.13.0 ~~~~~~~~~~~~~~ Released: 2020-11-30 Notes: * This release introduces a new library, libappstream-compose, designed to provide building blocks for composing AppStream metadata. This includes GUI stuff like font and SVG rendering, which libappstream deliberately does not provide. The new compose library is not API/ABI stable and should - for now - only be used by appstream-generator. Features: * qt: add missing Provided::KindId enum (Aleix Pol) * Add experimental libappstream-compose (Matthias Klumpp) * Implement support for display_length relation kind (Matthias Klumpp) * Implement "tv-remote" input control kind (Matthias Klumpp) * Refactor AsRelation to use GVariant internally (Matthias Klumpp) * content-rating: Align the OARS/CSM mappings of sex-* (Philip Withnall) * content-rating: Add content rating system APIs from gnome-software (Philip Withnall) * content-rating: Expand translator comments to link to OARS website (Philip Withnall) Specification: * spec: Specify display_length requires/recommends item (Matthias Klumpp) * spec: Add tv-remote user input control type (Matthias Klumpp) Bugfixes: * Use glib-mkenums to create the GType of all the available enums (Corentin Noël) * Set FD_CLOEXEC on the LMDB FD manually (Fabian Vogt) * Never ship with an embedded convenience copy of Highlight.js (Matthias Klumpp) * Don't fail doc install if global highlight.js wasn't found (Matthias Klumpp) * Properly escape markup when fixing invalid description data (Matthias Klumpp) * validator: Don't pass NULL to vprintf, it's not an allowed value (Matthias Klumpp) * meson: Kill deprecation warning for pkgconfig.generate (Matthias Klumpp) * validator: Demote cid-contains-uppercase-letter from INFO to PEDANTIC (Matthias Klumpp) * Change some AsPool GIR annotations to only transfer container, as workaround for issue in GIR (Matthias Klumpp) * Properly parse YAML font provides entry (Matthias Klumpp) * content-rating: Lower the OARS/CSM mapping of sex-homosexuality/intense (Philip Withnall) * Change return annotation of as_agreement_get_sections to "transfer none" (Rico Tzschichholz) * contrib: Vala expects element-type of PtrArray to reflect their ownership (Rico Tzschichholz) Version 0.12.11 ~~~~~~~~~~~~~~ Released: 2020-05-12 Features: * Auto-update static category data from fd.o * Implement support for input control relations * validator: Validate input control relations * validator: Put AppStream technical terms and tag names in backticks in explanation texts * Modernize the README * validator: Check for uppercase letters in cids * Strip beginning/trailing newlines in a number of places * Make AsContext getter for AsComponent public API * qt: Add support for name_variant_suffix * Make component sort-score API public API * Implement a YAML representation of release artifact information Specification: * Build specification and docs with DAPS * docs: Add (HTML) anchors for requires/recommends items * spec: Specify user input control recommendations * docs: Don't show reference to nonexistent provides->service tag for services * spec: Encourage the use of only lowercase letters for component-IDs * docs: Document --explain flag in ascli manual page as well * docs: Add permalink anchors to some list entries * Formally support BLAKE2b/s as hash functions for release artifacts * docs: Link to the MetaInfo Creator webapp in a few places Bugfixes: * Be less noisy about ignoring excessively long search tokens * Tighten the "free license" check and prevent false positives * cache: Use correct fts value per result (David Hewitt) * validator: Control items can't have a version * validator: Reduce download timeout * yaml: Strip encoding when serializing keyword lists * Allows arbitrary indentation when converting NEWS files * Ignore NULL values silently in our stringstrip function * Only dump valid metainfo description markup, sanitize it otherwise Version 0.12.10 ~~~~~~~~~~~~~~ Released: 2020-01-18 Notes: * This release drops its optional dependency on Curl in favor of a non-optional dependency on libsoup. Features: * Sort addons less prominently than applications (Aleix Pol) * validator: Display wrong data hint if metadata_license is invalid (Matthias Klumpp) * Split tokens for descriptions as well (Matthias Klumpp) * validator: Replace curl with libsoup for download tests (Matthias Klumpp) * Update content rating for OARS 1.1, make CSM age conversion public API (Matthias Klumpp) * tests: Don't duplicate XML/YAML preambles in test data (Matthias Klumpp) * Add asynchronous method for loading the metadata pool (Matthias Klumpp) * Try to reuse initial temporary cache when loading data into pool (Matthias Klumpp) * Reduce minimum required GLib version to 2.58 (Matthias Klumpp) * Implement support for "runtime" component type (Matthias Klumpp) * Use SPDX JSON and filter out license exceptions in static data (Matthias Klumpp) * Update SPDX and TLD data (Matthias Klumpp) * Implement support for the WITH operator in recent SPDX (Matthias Klumpp) * Add function to test if a license string is for free software (Matthias Klumpp) * qt: Add wrappers for license exception and freeness tests (Matthias Klumpp) * ascli: Add vercmp shorthand for compare-versions subcommand (Matthias Klumpp) * ascli: Don't print validation issues in color and bold - color is enough (Matthias Klumpp) * its: Mark name_variant_suffix as translatable (Matthias Klumpp) * Make AsContext public API (Matthias Klumpp) * Add convenience methods to direcly serialize a component to XML (Matthias Klumpp) Specification: * docs: Adjust Freedesktop spec URLs to their new redirect locations (Matthias Klumpp) * Document & implement the new name_variant_suffix tag (Matthias Klumpp) * spec: Specify the "runtime" component type (Matthias Klumpp) * spec: Permit alternative IDs in appstream URIs (Matthias Klumpp) Bugfixes: * Fix double-free error when trying to dump bad XML markup (Matthias Klumpp) * validator: Check URLs correctly if they have leading/trailing spaces (Matthias Klumpp) * Remove deprecated GLib API (Matthias Klumpp) * Don't autofree a temporary error that may be propagated (Matthias Klumpp) * Don't attempt to add a zero-length search token to the index (Matthias Klumpp) * Filter out search tokens that are stemmed to nothing (Matthias Klumpp) * Prefer locale with region code over plain language code if possible (Matthias Klumpp) * Use the same locale fallback algorithm everywhere (Matthias Klumpp) * validator: Don't fail when encountering WITH operator (Matthias Klumpp) * contrib/vapi: Add deprecated ProvidedKind.MIMETYPE to preserve API (Rico Tzschichholz) Version 0.12.9 ~~~~~~~~~~~~~~ Released: 2019-09-24 Features: * validator: Add method to retrieve list of all tags * ascli: Add command to make a desktop-entry file from a metainfo file * ascli: Add command for YAMl NEWS file conversion * ascli: Convert text NEWS file as well * Recognize Specification/Documentation as new section type when converting NEWS * Augment metainfo file with release information automatically * Use gperf for description markup as well * validator: Make file-extension checks work with complex URIs * Implement support for release issues Specification: * docs: Actually give a metadata license recommendation * Document the issue tag, which can be part of release information * spec: Explicitly allow WebP for images in metainfo files * Permit requires/recommends relations on firmware, like Fwupd uses Bugfixes: * docs: Move compulsory_for_desktop where it belongs * docs: Mention how to exclude .desktop files from being processed * Make -Wdeprecated-copy non-fatal in maintainer mode for now * cache: Relax LMDB database max size assumption a bit to help 32bit builds * validator: Don't crash in assertion if we have no filename * Catch more errors when parsing YAML and _ref less often * Interleave translated/untranslated paragraphs when generating metainfo XML * Don't format cached XML * Don't emit language tag for screenshot if it is unnecessary * docs: Add missing documentation to API reference * docs: Document a few missing ascli subcommands Version 0.12.8 ~~~~~~~~~~~~~~ Released: 2019-08-16 Notes: * This release changes the output of appstreamcli's validate actions. Please account for that if you were parsing it! The new `--format=yaml` flag for ascli may be interesting to produce machine-readable output. Features: * Add install-docs meson build option (Antonio Larrosa) * Use more portable deprecation macro * Deprecate AsIssueImportance, use equivalent AsIssueSeverity instead * validator: Implement first bits of tag-based validation * cli: Print terse issue list by default, make long explanation explicit * Assume releases are sorted in metainfo, fail validation on wrong sorting * validator: Allow returning validator output as structured YAML * validator: Refine YAML output and allow CLI to generate it for validate-tree * Improve XML node dumping functions * Permit and in description paragraphs and lists * validator: Don't complain about and in paragraphs * validator: Validate release info better, check release dates * Recognize more "provides" item types * validator: Check relations for loops with the component itself * its: Handle new inline markup correctly in translations * Add AsVideo object to contain screenshot video data * Implement video support for screenshots * validator: Validate the new video screenshot element * qt: Add support for screenshot videos * validator: The default screenshot must not contain a video * validator: Add methods to query tag severity/explanation explicitly * Implement support for icon-theme components Specification: * spec: Recommend latest-to-oldest release order for metainfo * spec: Permit use of and for description formatting * docs: Clarify when/why to use .appdata.xml instead of .metainfo.xml extensions * docs: Explain why name/summary should not be omitted for app metainfo files * spec: Clarify that ISO 8601 dates in AppStream require the complete date * spec: Specify videos as a screenshot option * spec: Specify an icon-theme component type Bugfixes: * Change spelling: DBus → D-Bus, MIME types → Media types (Allan Nordhøy) * pool: Use fallback tempdir if user /home does not exist * Restore compatibility with GLib < 2.58 * Find LMDB even if no pkg-config file was installed * pool: Improve error reporting on cache refreshes * Fix possible NULL dereference * Fix division-by-zero if there are no components available at all * pool: Fix some error checks when adding components * Report better errors when counting cached components fails * Fix infinite recursion if component has itself listed as an addon * validator: Correctly read line numbers in long files * Catch out-of-context XML reading errors again * Protect against addon extension loops in the cache Version 0.12.7 ~~~~~~~~~~~~~~ Released: 2019-06-16 Notes: * This release changes the way AsPool caches components and will also permanently keep components in an LMDB-based cache. Additionally, the GVariant AsComponent serialization was removed. Features: * Depend on LMDB (Matthias Klumpp) * tests: Test pool cache and XML read performance separately (Matthias Klumpp) * Improvements to data caching and fulltext search (Matthias Klumpp) * Add new LMDB based component cache (Matthias Klumpp) * cache: Implicitly hash keys if they are too long for the database (Matthias Klumpp) * cache: Implement all supported search modes (Matthias Klumpp) * cache: Implement various performance optimizations and helpers (Matthias Klumpp) * cache: Allow switch to nosync mode, make insertions threadsafe (Matthias Klumpp) * Refactor component pool to make use of the mmap'ed caches by default (Matthias Klumpp) * Don't limit term length in user search queries (Matthias Klumpp) * Ignore one-letter search terms (Matthias Klumpp) * pool: Mask removed components in readonly caches so they can not be queried (Matthias Klumpp) * Remove component GVariant serialization (Matthias Klumpp) * cache: Use binary representations for cache values (Matthias Klumpp) * cache: Always refine launchable entries, to make them searchable (Matthias Klumpp) * Make component scope API public (Matthias Klumpp) * Handle LicenseRef URLs explicitly when extracing a license URL (Matthias Klumpp) * Update static data (Matthias Klumpp) * tests: Update perf test with test for the new cache implementation (Matthias Klumpp) * its: Add "translatable" option in metainfo.its (fujiwarat) Specification: * Add a note about not dropping .desktop suffix from existing IDs (Kalev Lember) * spec: clarify purpose (Kamil Páral) * docs: Explicitly rule out nested lists (Marius Vollmer) * docs: Add link to project page to specification abstract (Matthias Klumpp) * spec: Clarify format of the appstream: URI (Matthias Klumpp) * spec: Clarify how to denote proprietary licenses (Matthias Klumpp) Bugfixes: * tests: Fix potential wrong output when two tests fail in parallel (Matthias Klumpp) * validator: Allow some top-level tags to be empty (Matthias Klumpp) * Only match all things for broad queries, for invalid ones return nothing (Matthias Klumpp) * Determine system cache age correctly and don't needlessly refresh it (Matthias Klumpp) * Never attempt to load the system cache when it is not needed (Matthias Klumpp) * Assume "unknown" distribution ID by default (if /etc/os-release is missing) (Matthias Klumpp) * cache: Ensure previous cache is closed before opening a new one (Matthias Klumpp) * Put test data in alphabetical order (Robert Ancell) * Generate XML and YAML in alphabetical order (Robert Ancell) Version 0.12.6 ~~~~~~~~~~~~~~ Released: 2019-03-02 Features: * Implement artifacts (Matthias Klumpp) * Search improvements (Matthias Klumpp) Specification: * doc: help distinguish the 2 'languages' tags (Beuc) * spec: Document the new artifacts tag (Matthias Klumpp) Translation: * Finnish - Ammuu5 * Hungarian - Balázs Úr * Turkish - Kemal Oktay Aktoğan * Spanish - advocatux * Danish - scootergrisen Version 0.12.5 ~~~~~~~~~~~~~~ Released: 2019-01-26 Features: * qt: expose the spdx parser to Qt users (Aleix Pol) * Implement operating-system component and add convenience functions (Matthias Klumpp) * qt: Add operating-system component type and a few utility functions (Matthias Klumpp) * Allow fetching the ISO8601 date directly alongside the timestamp in AsRelease (Matthias Klumpp) * Implement date_eol for AsRelease (Matthias Klumpp) * Add convenience methods for retrieving date_eol as UNIX timestamp (Matthias Klumpp) * qt: Allow retrieving the EOL timestamp for releases (Matthias Klumpp) * Implement new release details URL (Matthias Klumpp) * Make rDNS conversion function more generic and add more extensive tests (Matthias Klumpp) Specification: * docs: tag can have details url (Jehan) * spec: Specify the operating-system component (Matthias Klumpp) * spec: Specify date_eol for releases (Matthias Klumpp) * docs: Explicitly state list items are allowed in ol/ul lists (Matthias Klumpp) Bugfixes: * Don't warn about issues in a cache refresh if there weren't any (Matthias Klumpp) * Ensure releases are always sorted in descending order (Matthias Klumpp) * pool: Fix g-i for get_components_*() while GPtrArray owns its elements (Rico Tzschichholz) Translation: * Chinese (Simplified) - Dingzhong Chen * German - Johannes Keyser * Turkish - Mesut Akcan * French - Nathan * Czech - Pavel Borecki * Catalan - Robert Antoni Buj Gelonch * Portuguese: - ssantos Version 0.12.4 ~~~~~~~~~~~~~~ Released: 2018-12-22 Features: * pool: Be a lot more forgiving when encountering invalid components (Matthias Klumpp) * Implement component removal via remove-component merges (Matthias Klumpp) * validator: Warn about insecure URLs, handle mailto: URLs (Matthias Klumpp) * Add a contact URL type (Robert Ancell) Specification: * Document new remove-component merge type (Matthias Klumpp) Bugfixes: * as-pool: fix GObject annotation for GPtrArray owning the elements (Corentin Noël) * Make invalid components ratio check more accurate (Matthias Klumpp) * Ensure description paragraphs contain no invalid XML tags (Matthias Klumpp) Translation: * Norwegian Bokmål - Allan Nordhøy * Swedish - Anders Jonsson * Chinese (Traditional) - Chang-Chia Tseng - Jeff Huang * Dutch - Heimen Stoffels * Russian - Igor * Galician - Iván * Japanese - Ryo Nakano - Kyotaro Iijima * Turkish - Mesut Akcan * Italian - Milo Casagrande * Lithuanian - Moo * Polish - Piotr Drąg * Portuguese (Brazil) - Rafael Fontenelle * Portuguese - ssantos * Ukrainian - Yuri Chornoivan * Arabic - alaazghoul - mohammadA Version 0.12.3 ~~~~~~~~~~~~~~ Released: 2018-10-22 Notes: * Beginning with this release, data from local .desktop files will not be loaded into the pool automatically, unless a metainfo file also exists. This should ensure less duplicated components in general higher-quality data to be displayed. It also provides another incentive to add/fix metainfo files. If you prefer the previous behavior, set the AS_POOL_FLAG_READ_DESKTOP_FILES flag on your AsPool instance. Features: * apt: Ignore errors post-update (Matthias Klumpp) * validator: Allow content_rating to be empty (Matthias Klumpp) * ascli: Display stock icon name if no suitable icon was found for details view (Matthias Klumpp) * Refactor loading of local metainfo files (Matthias Klumpp) Specification: * spec: Clarify the requirement for content_attribute tags in content_rating (Matthias Klumpp) * docs: Write intro for addon quickstart (Matthias Klumpp) * docs: Replace hyphens in component-IDs of XML examples (Matthias Klumpp) Bugfixes: * Ensure all addons are linked to a component (David Hewitt) * Annotate nullable return types (David Hewitt) * cache: Set explicit variant types for cases where they can not be inferred (Matthias Klumpp) * utils: Handle NULL strings when comparing versions (Matthias Klumpp) * Explicitly include string.h in as-tag.c (Matthias Klumpp) * Properly ignore desktop-entry components if we have better data (Matthias Klumpp) * Remove AppStream XSD schema (Matthias Klumpp) * Update static data (Matthias Klumpp) * Set error variable if there were some errors during refinement (Stefan Bruens) Translation: * Norwegian Bokmål - Allan Nordhøy - Petter Reinholdtsen * German - Chris * Spanish - Tatiana Canales * Japanese - rikanotank1 Version 0.12.2 ~~~~~~~~~~~~~~ Released: 2018-08-04 Bugfixes: * Fix a couple of incorrect g_ptr_array_unrefs (Iain Lane) * Use autofree functions instead of freeing resources explicitly (Matthias Klumpp) * Add missing const (Matthias Klumpp) * Ensure we don't produce a .pc file with unnecessary Requires.private lines (Matthias Klumpp) * Stop leaking local GVariantDict instance contents (Phil Miller) * Drop leaked references to container items (Phil Miller) Translation: * Norwegian Bokmål - Allan Nordhøy * Swedish - Anders Jonsson * Indonesian - Andika Triwidada * Chinese (Traditional) - Chang-Chia Tseng * Dutch - Heimen Stoffels * French - Hugo Locurcio * Deutsch - James Bond * Italian - Milo Casagrande * Lithuanian - Moo * Čeština - Pavel Borecki * Português (Brasil) - Rafael Fontenelle * Catalan - Robert Antoni Buj Gelonch * Arabic - alaazghoul Version 0.12.1 ~~~~~~~~~~~~~~ Released: 2018-06-10 Features: * ascli: Add command to compare version numbers (Matthias Klumpp) * yaml: Allow reading multiple localized strings from YAML data (Matthias Klumpp) * yaml: Always include the untranslated strings (Matthias Klumpp) * Allow to ignore media_baseurl when parsing metadata (Matthias Klumpp) * xml: Add implementation of the agreement tag (Matthias Klumpp) * Add new "repository" component type (Matthias Klumpp) * yaml: Implement Agreements field (Matthias Klumpp) * cache: Implement support for agreements (Matthias Klumpp) * tests: Improve cache data tests, add agreement tag test (Matthias Klumpp) * Use gperf for perfect hash generation for some tags (Matthias Klumpp) * tests: Add rundimentary performance test (Matthias Klumpp) * its: Mark agreement sections as translatable (Matthias Klumpp) * qt: Add support for service/repository component types (Matthias Klumpp) Specification: * docs: Describe the custom tag (Matthias Klumpp) * spec: Describe the new agreement tag (Matthias Klumpp) * docs: Clarify that the /usr/share/appdata/ path is legacy and should not be used (Matthias Klumpp) Bugfixes: * its: Allow translation of release descriptions (Marc J) * Load data from desktop files properly again (Matthias Klumpp) * Update desktop-environment list (Matthias Klumpp) * qt: Don't warn about inlining in maintainer mode (Matthias Klumpp) Translation: * Spanish - Adolfo Jayme Barrientos * Русский - Igor * French - Jean-François Michaud * Dutch - Jeff Huijsmans * Polish - Piotr Drąg * Ukrainian - Yuri Chornoivan Version 0.12.0 ~~~~~~~~~~~~~~ Released: 2018-04-04 Features: * Implement release types (Matthias Klumpp) * qt: Support release types (Matthias Klumpp) * Update static data lists (Matthias Klumpp) * Make as_str_replace use as_gstring_replace internally (Matthias Klumpp) * spdx: Add some compatibility workarounds for SPDX 3.0 (Matthias Klumpp) * validator: Validate SPDX license expressions for metadata_license (Matthias Klumpp) * apt: Add config snippets to enable icon downloads (Matthias Klumpp) * yaml: Ensure all string values have whitespaces stripped (Matthias Klumpp) * Make as_component_get_launchables public API (Matthias Klumpp) * Implement support for requires/recommends (Matthias Klumpp) * Add recommends/requires data to the cache (Matthias Klumpp) * Add a quick way to check if a version satisfies an AsRelation requirement (Matthias Klumpp) * ascli: Properly document the --no-net flag (Matthias Klumpp) * ascli: Allow to disable network acces via an environment variable (Matthias Klumpp) * apt: Support 48x48px icons (Matthias Klumpp) * yaml: Make Requires/Recommends data more compact and easier to emit (Matthias Klumpp) * validator: Validate requires/recommends tags (Matthias Klumpp) * Default to format version 0.12 (Matthias Klumpp) Specification: * spec: Add a "type" property to tag. (Jehan) * spec: Initial draft for requires/recommends (Matthias Klumpp) * spec: Document the YAML Rquires/Recommends fields (Matthias Klumpp) * spec: Clarify that the memory requirement uses MiB as unit (Matthias Klumpp) Bugfixes: * qt: Implement missing constructors (Aleix Pol) * apt: escape the icon scale factor as it is using the arobase character (Corentin Noël) * Check plain language string in as_component_localized_get as well (Antonio Rojas) * qt: Define location and soname for all configurations, not just Debug (Gabriel Souza Franco) * Never override high-quality data with incomplete .desktop data (Matthias Klumpp) * Make data update script work with recent SPDX (Matthias Klumpp) * Add a timeout to URL validity checks (Matthias Klumpp) Translation: * Ukrainian - AB - Yuri Chornoivan * Norwegian Bokmål - Allan Nordhøy * Swedish - Anders Jonsson * Indonesian - Andika Triwidada - se7entime * German - Andreas Kleinert * Hungarian - Balázs Meskó - Balázs Úr * Chinese (Traditional) - Chang-Chia Tseng * Russian - Igor * Finnish - Juhani Numminen * Korean - Jung-Kyu Park * Portuguese (Brazil) - Luiz Fernando Ranghetti - Rafael Fontenelle - Rafael Henrique Mendes de Oliv * Slovak - Matúš Baňas * Arabic - Michal Čihař - Mutaz Tayyeb AbuSaad * Italian - Milo Casagrande * Lithuanian - Moo * Czech - Pavel Borecki * Polish - Piotr Drąg * Catalan - Robert Antoni Buj Gelonch Version 0.11.8 ~~~~~~~~~~~~~~ Released: 2018-01-22 Features: * validator: Emit a hint in case a discouraged AppStream ID style is used (Matthias Klumpp) * l10n: Renamed Norwegian Bokmål language file (Matthias Klumpp) Specification: * docs: Add quickstart instructions for intltool (David Steele) * spec: Discourage use of hyphens and digit-started segments for IDs (Matthias Klumpp) Bugfixes: * qt: Export the AppStreamQt target (Aleix Pol) * Various string improvements (Allan Nordhøy) * validator: Don't make HEAD requests for URL checks, fetch first byte instead (Matthias Klumpp) * Enforce a non-broken version of gobject-introspection (Matthias Klumpp) * Ensure LINGUAS update is only run explicitly (Matthias Klumpp) * Fix a minor memory and fd leak (Matthias Klumpp) Translation: * Norwegian Bokmål - Allan Nordhøy - Petter Reinholdtsen * Swedish - Anders Jonsson - Allan Nordhøy * German - Andreas Kleinert * Chinese (Traditional) - Chang-Chia Tseng * Chinese (Simplified) - Dingzhong Chen * French - Emmanuel Gil Peyrot - Yvan Masson * Dutch - Heimen Stoffels * Russian - Igor * Slovak - Martina Tatranská * Italian - Milo Casagrande * Czech - Pavel Borecki * Polish - Piotr Drąg * Ukrainian - Yuri Chornoivan Version 0.11.7 ~~~~~~~~~~~~~~ Released: 2017-10-22 Notes: * The appstreamcli validation commands now use curl if it is available to check all URLs in the metadata for existence. If you don't want this behavior, pass "--nonet" to appstreamcli. There might also be false positives (one is known with the KDE bugtracker) that need to be investigated, so feedback on this new feature is welcome. Features: * validator: Check all urls for validity (Matthias Klumpp) * validator: Check web-application components for missing tags (Matthias Klumpp) * Add API to retrieve the AppStream library version (Matthias Klumpp) * apt: Allow fetching 128x128@2 HiDPI icons (Rico Tzschichholz) Specification: * Add the "url" launchable type (Dimitrios Christidis) * spec: Clarify some icon details in the collection data (Marius Vollmer) * spec: Allow tags in generic components (Marius Vollmer) * spec: Specify the web-application component type (Matthias Klumpp) Bugfixes: * Fix endless loop when validating screenshots (Matthias Klumpp) * ascli: Show a list of component-types when --help is passed to new-template (Matthias Klumpp) * validator: Drop the wget fallback, making missing curl only an info (Matthias Klumpp) * meson: Properly define header-file in gir (Rico Tzschichholz) Translation: * Norwegian Bokmål [new!] - Allan Nordhøy * Swedish - Anders Jonsson * German - Andreas Kleinert * Chinese (Traditional) - Chang-Chia Tseng * Dutch - Heimen Stoffels * Italian - Milo Casagrande * Czech - Pavel Borecki * Polish - Piotr Drąg * Ukrainian - Yuri Chornoivan Version 0.11.6 ~~~~~~~~~~~~~~ Released: 2017-10-02 Features: * Improve screenshot validation (Matthias Klumpp) * Allow to disable introspection (Matthias Klumpp) Bugfixes: * Revert back to the old build option names (Matthias Klumpp) * Apply maintainer flags equally to C++ and C (Matthias Klumpp) * Explicitly set C/C++ standard versions (Matthias Klumpp) * vapi: Include the right header (Matthias Klumpp) * xml: Correctly write screenshots tag again (Matthias Klumpp) * Do not cache a screenshot that doesn't have images (Matthias Klumpp) * xml: Support legacy screenshot tags again (Matthias Klumpp) Translation: * Swedish - Anders Jonsson * Portuguese (Brazil) - Davi da Silva Böger - Rafael Fontenelle Version 0.11.5 ~~~~~~~~~~~~~~ Released: 2017-09-04 Features: * Restructure build feature flags (Matthias Klumpp) * Allow disabling API documentation build (Matthias Klumpp) Bugfixes: * qt: Don't check bitness when finding AppStreamQt (Matthias Klumpp) Translation: * Indonesian - se7entime Version 0.11.4 ~~~~~~~~~~~~~~ Released: 2017-08-30 Notes: * This release switches the build system from CMake to Meson. You will need Meson (>= 0.42) in order to build AppStream. Please test for any regressions. Features: * Implement Meson support (Matthias Klumpp) * meson: Make build with sanitizers (partially) work again (Matthias Klumpp) * meson: Add helper script for building documentation (Matthias Klumpp) * docs: Always rebuild documentation on-demand (Matthias Klumpp) * Update README for Meson (Matthias Klumpp) * Implement cockpit-manifest launchable type (Matthias Klumpp) * validator: Actually validate the type property of "launchable" tags (Matthias Klumpp) * Allow to search the pool for components that provide a launchable (Matthias Klumpp) * qt: Add new function to search components by launchable (Matthias Klumpp) Specification: * spec: New "cockpit-manifest" launchable type (Marius Vollmer) Bugfixes: * validator: Complain if a component has no ID (Matthias Klumpp) Translation: * Chinese (Traditional) - Chang-Chia Tseng * Polish - Piotr Drąg Version 0.11.3 ~~~~~~~~~~~~~~ Released: 2017-08-04 Bugfixes: * qt: Don't crash when an error is found and no error string is passed (Aleix Pol) * Propagate document context to the context object for XML files (Matthias Klumpp) * validator: Correctly recognize "launchable" as valid tag (Matthias Klumpp) Translation: * Swedish - Anders Jonsson * Czech - Pavel Borecki * Catalan - Robert Antoni Buj Gelonch Version 0.11.2 ~~~~~~~~~~~~~~ Released: 2017-07-18 Features: * cache: Refactor cache functions (Matthias Klumpp) * Deduplicate origin/locale/arch with AsContext (Matthias Klumpp) * Get rid of a couple of internal helper methods (Matthias Klumpp) * cli: When using convert, always assume collection style for YAML (Matthias Klumpp) Specification: * Adjust docs to clearly state that licenses are SPDX expressions (Harald Sitter) Bugfixes: * qt: Improve Icon QDebug information (Aleix Pol) * Resolve crash when serializing lots of XML documents (Matthias Klumpp) * xml: Don't truncate translated entries after encounting a wrong locale (Matthias Klumpp) * Set a real locale if locale is set to "ALL" (Matthias Klumpp) * validator: Make ending dot in component name only a pedantic issue (Matthias Klumpp) Translation: * Arabic - Heba ahmed * Russian - Igor * Italian - Milo Casagrande * Lithuanian - Moo * Spanish - Piotr Drąg Version 0.11.1 ~~~~~~~~~~~~~~ Released: 2017-07-02 Notes: * This release contains refactoring of the XML/YAML parsers and some other changes that are more invasive than usual. Features: * qt: Add new getters/setters and classes to be on par with the GObject library (Jan Grulich) * qt: Add AS::Metadata class used for parsing desktop and appstream metadata files (Jan Grulich) * Refactor the XML parser and serialization code (Matthias Klumpp) * Refactor the YAML parser and emitter code (Matthias Klumpp) * Implement 'service' component type (Matthias Klumpp) * Improve speed of metainfo description parsing slightly (Matthias Klumpp) * test: Add additional testcase for reading metainfo description tags (Matthias Klumpp) * test: Test metainfo descriptions starting with enumerations (Matthias Klumpp) Specification: * doc: Add Distro Packaging page (Jeremy Bicha) * doc: Add "service" components and their launchables (Marius Vollmer) * Allow components to provide other components (provides -> id) (Matthias Klumpp) Bugfixes: * doc: Uncomment line in middle of paragraph (Jeremy Bicha) * doc: A releases tag is not essential for components, but summary is (Matthias Klumpp) * Allow descriptions to start with an enumeration (Matthias Klumpp) * Ensure we always update with fresh data when refreshing the cache (Matthias Klumpp) * Replace invalid components in the pool with new ones of the same name (Matthias Klumpp) * Resolve a few potential bugs (found by static checks) (Matthias Klumpp) * xml: Check if we are trying to parse a real component (Matthias Klumpp) Translation: * Spanish - Adolfo Jayme-Barrientos * Hungarian - Balázs Úr * Dutch - Heimen Stoffels * Russian - Igor * French - Jean-Baptiste * Lithuanian - Moo * Czech - Pavel Borecki * Polish - Piotr Drąg * Ukrainian - Yuri Chornoivan * Serbian (latin) - Слободан Симић(Slobodan Simić) Version 0.11.0 ~~~~~~~~~~~~~~ Released: 2017-05-03 Features: * Implement read/write support for content ratings (Matthias Klumpp) * tests: Test the content_rating tag XML read/write (Matthias Klumpp) * yaml: Read/write ContentRating (Matthias Klumpp) * cache: Handle the content-rating property (Matthias Klumpp) * Add new AsLaunch type (Matthias Klumpp) * Fully implement the launchable tag (Matthias Klumpp) * Recognize scaling factor for HiDPI icons (Matthias Klumpp) * apt: Allow fetching HiDPI icons (Matthias Klumpp) Specification: * spec: Don't give wrong information about the tag (Matthias Klumpp) * spec: Specify content_rating tag for content age ratings (Matthias Klumpp) * spec: Specify the new launchable tag and apply its effects (Matthias Klumpp) * spec: Add note on where to place icons with a scaling factor (Matthias Klumpp) Bugfixes: * Add missing word in string (Anders Jonsson) * yaml: Fix crash when serializing component with a dbus:user provided item (Matthias Klumpp) * cache: Don't write cache if there are no valid components (Matthias Klumpp) * docs: Clarify "permissive" for metadata_license and make the paragraph more explicit (Matthias Klumpp) * Ensure GVFS never starts in root user slice (Matthias Klumpp) * Correctly tokenize values with dash or plus (Matthias Klumpp) * vapi: Add appstream.deps file (Rico Tzschichholz) Translation: * Swedish - Anders Jonsson - Josef * Indonesian - Andika Triwidada * Chinese (Traditional) - Chang-Chia Tseng * Chinese (China) - Dingzhong Chen - 陈鼎中 * Gaelic - GunChleoc * Dutch - Heimen Stoffels * Russian - Igor - Maxim Taranov * French - Jean-Baptiste * Italian - Milo Casagrande * Lithuanian - Moo * Turkish - Muhammet Kara * Polish - Piotr Drąg * Ukrainian - Yuri Chornoivan * Serbian - Slobodan Simić Version 0.10.6 ~~~~~~~~~~~~~~ Released: 2017-01-22 Features: * validator: Be more strict about the tag types in metainfo files (Matthias Klumpp) * validator: Unconditionally check for name and summary (Matthias Klumpp) * Move all merge logic to AsComponent (Matthias Klumpp) * Allow making AppStream consume data from metainfo instead of collection files (Matthias Klumpp) * apt: Do not enable any icon downloads by default (Matthias Klumpp) * validator: Check categories in XML as well (Matthias Klumpp) * cli: Make templates for different component-types a bit more useful (Matthias Klumpp) * Allow a few more permissive licenses for metadata_license (Matthias Klumpp) * Add support for "+" operator at the end of SPDX license identifiers (Kalev Lember, Matthias Klumpp) * cli: Print tiny summary after validation (very useful for validate-tree) (Matthias Klumpp) * validator: Validate for hyperlinks in description / summary / developer-name (Matthias Klumpp) * validator: Make missing long description a pedantic issue in more cases (Matthias Klumpp) * Also recognize "FSFUL" license as pemissive (Matthias Klumpp) * validator: Adjust priorities of missing modalias/font tags in driver/font components (Matthias Klumpp) * Skip loading desktop-entries if we know their component already (Matthias Klumpp) * Be lazier, only parse what is necessary in the data pool (Matthias Klumpp) Specification: * spec: Clarify that name/summary are now always required for metainfo files (Matthias Klumpp) * spec: Clarify desktop vs. desktop-application (Matthias Klumpp) * spec: Add a small paragraph about whether and what xmlns to use (Matthias Klumpp) * spec: Make it clear can be used in metainfo files too (Matthias Klumpp) * spec: Make clear that update_contact's value is case-insensitive (Matthias Klumpp) * docs: Make sure all examples follow the reverse-DNS scheme (Matthias Klumpp) Bugfixes: * Don't hardcode share dir but use CMAKE_INSTALL.. (Heiko Becker) * validator: Don't enforce .desktop suffix on desktop-app component IDs (Matthias Klumpp) * qt: Allow catching error strings returned by Pool::load (Aleix Pol) * Always drop data from desktop-entry files if we have better metadata (Matthias Klumpp) * apt: Install icons back if they went completely missing (Matthias Klumpp) * Update SPDX and TLD data (Matthias Klumpp) * yaml: Read release/urgency key (Matthias Klumpp) Translation: * Chinese (Taiwan) - Chang-Chia Tseng * Dutch (new!) - Heimen Stoffels * Russian - Igor * Finnish - Juhani Numminen - Lari Oesch * Portuguese - Manuela Silva * Italian - Milo Casagrande * Czech - Pavel Borecki * Polish - Piotr Drąg * Ukrainian - Yuri Chornoivan * French - Yvan Masson Version 0.10.5 ~~~~~~~~~~~~~~ Released: 2016-12-22 Features: * Match modalias wildcards on regular searches (Matthias Klumpp) * xml: Add methods to get/set custom data in metainfo/collection files (Matthias Klumpp) * Make cache update issue messages slightly more verbose (Matthias Klumpp) * Add preliminary code for reading metainfo files in addition to .desktop files (Matthias Klumpp) * cache: Cache custom fields as well (Matthias Klumpp) Bugfixes: * qt: Make sure dependencies are fetched when looking for the package (Aleix Pol) * yaml: Consistently read/write the Suggests field (Matthias Klumpp) * Correctly read bundle kind from XML data (Matthias Klumpp) Translation: * Russian - Igor * German - Lukas Selch * Italian - Milo Casagrande * Turkish - Muhammet Kara * Polish - Piotr Drąg * Ukrainian - Yuri Chornoivan * Portuguese (Brazil) - dsboger Version 0.10.4 ~~~~~~~~~~~~~~ Released: 2016-11-27 Features: * qt: Introduce AppStream::Suggested in the Qt frontend (Aleix Pol) Bugfixes: * Properly validate suggests tag (Matthias Klumpp) * qt: Add an empty check to Provided and return it if necessary (Matthias Klumpp) * Add path search to find libstemmer headers (#91) (Neal Gompa) Translation: * Indonesian - John Vandenberg - Prasasto Adi - Sandy Kurniawan * English (United Kingdom) - John Vandenberg * Lithuanian - Moo Version 0.10.3 ~~~~~~~~~~~~~~ Released: 2016-11-01 Notes: * The release breaks the Qt library API. Patches to make KDE Discover use the new API exist in its Git master branch, and will be available with Plasma 5.9. The patches will likely not enter the stable branch, so if you want to upgrade AppStream, you might need to ship patches for Discover downstream to use the new API. Features: * qt: Update API to reflect more recent AppStream features, be easier to extend and also a bit faster due to removing needless data conversions. (Matthias Klumpp, Aleix Pol) * Make components record their origin kind internally (Matthias Klumpp) * Provide a file:/ URL for icons when we know a file name (Matthias Klumpp) * Add support for Snappy/Snap bundles (Matthias Klumpp) Specification: * Add new AppStream logo and button (Ken Vermette) * Add new AppStream logo and buttons to the docs (Matthias Klumpp) Bugfixes: * ascli: When converting, always include all translations (Matthias Klumpp) * Match .desktop files and metainfo data properly if ID is lacking .desktop suffix (Matthias Klumpp) Translation: * Chinese (Taiwan) - Mingye Wang * Chinese (China) - Mingye Wang * English (United Kingdom) - Sandy Kurniawan * Indonesian - Sandy Kurniawan Version 0.10.2 ~~~~~~~~~~~~~~ Released: 2016-10-10 Features: * test: Add unittests for reading urls (Matthias Klumpp) * qt: Add AppStream::Category class (Matthias Klumpp) * qt: Add missing URL type (Matthias Klumpp) * Handle "font" provided type in XML and YAML (Matthias Klumpp) * Replace Intltool with modern Gettext/Itstool (Matthias Klumpp) * Add logic to parse desktop entries (Matthias Klumpp) * Don't add ignored components to the pool (Matthias Klumpp) * validator: Validate fd.o domain name, make GNOME warning only pedantic (Matthias Klumpp) * validator: Allow languages tag in metainfo files (Matthias Klumpp) * Read information from .desktop files and add it to the pool (Matthias Klumpp) * Give the client app full control on what data sources we load (Matthias Klumpp) * Add private API for component scoping (Matthias Klumpp) Specification: * docs: Clarify name/summary essentialness for desktop-apps (Matthias Klumpp) * spec: Clarify how fonts provides should be handled (Matthias Klumpp) * spec: Simplify font metainfo, add more examples and clarify requirements (Matthias Klumpp) Bugfixes: * ascli: Replace refresh-index with refresh-cache in help text (#81) (Larry Price) * qt: nullptr access on unopened databases resulting in a crash (Harald Sitter) * qt: The data pool must always be valid during the Database lifetime (Matthias Klumpp) * If search results are going to be sorted, it makes sense for higher scores to be at the top of the list. Fixes #77. (Larry Price) * validator: Don't enforce long descriptions on fonts (Matthias Klumpp) * Hardcode metainfo directory (Matthias Klumpp) * ascli: Make every module use the global no-color flag properly (Matthias Klumpp) * validator: Don't emit excess warnings on missing type properties (Matthias Klumpp) Translation: * Hungarian - Balázs Úr * German - James Bond * Italian - Milo Casagrande * Lithuanian (new!) - Moo * Polish - Piotr Drąg * Portuguese (Brazil) - Rafael Capaci Pereira * Ukrainian - Yuri Chornoivan Version 0.10.1 ~~~~~~~~~~~~~~ Released: 2016-09-16 Features: * Add AppStream button image (Ken Vermette) * Ship a metainfo file (Matthias Klumpp) * Don't use an extra hash table for AsProvided (Matthias Klumpp) * Register bundle type for AppImageKit (Matthias Klumpp) * Implement localization component type (Matthias Klumpp) * validator: Complain less-loudly when encontering GNOME-specific tags (Matthias Klumpp) * validator: Check for superfluous dots (Matthias Klumpp) * validator: Strictly validate ID for KDE and GNOME (Matthias Klumpp) * ascli: Modernize the way we handle subcommands (Matthias Klumpp) * qt: Allow retrieving the desktop-id of a component (Matthias Klumpp) Specification: * Add new driver component type (Matthias Klumpp) * spec: Describe localization component type (Matthias Klumpp) Bugfixes: * docs: Add a few missing classes to the API docs (Matthias Klumpp) * Fix cache (de)serialization for screenshots and suggestions (Matthias Klumpp) * yaml: Set screenshot image type correctly (Matthias Klumpp) * cache: Iterate the right dictionary when looking at checksums (#71) (Iain Lane) * apt: Ignore broken symlinks in /var/lib/apt/lists (Iain Lane) * as_get_yml_data_origin: Error out if opening the file fails for any reason (Iain Lane) * Make addons find their target component again (Matthias Klumpp) * yaml: Don't fail if we encounter a translated node without template (Matthias Klumpp) * Don't use GObject ref on GPtrArray (Matthias Klumpp) * ascli: Read metainfo files correctly when converting files (Matthias Klumpp) * xml: Properly serialize provides tag (Matthias Klumpp) * pool: Correctly update addon info when loading data from a cache object (Matthias Klumpp) * ascli: Auto-disable colors if we are not on a tty (Matthias Klumpp) * yaml: Enforce string/int type on YAML scalars (Matthias Klumpp) * yaml: Fix loading of cached icons in all formats (Matthias Klumpp) * qt: Never lie about a component kind (Matthias Klumpp) Translation: * Hungarian - Balázs Úr * Chinese (Taiwan) - Chang-Chia Tseng * German - Matthias Klumpp * Italian - Milo Casagrande * Indonesian - Mohamad Hasan Al Banna * Polish - Piotr Drąg * Kurdish Sorani [NEW!] - Rasti K5 * Ukrainian - Yuri Chornoivan Version 0.10.0 ~~~~~~~~~~~~~~ Released: 2016-08-30 Notes: * This release breaks API/ABI in order to support multiple metadata sets describing the same component (needed for bundling support), moving away from the database as central data store and general cleanup. * Porting is relatively straightforward, if you were using AsDatabase, you should switch to AsPool now (AsDatabase has been a wrapper around AsPool for a while anyway). * Many methods became private API with this release, file a bug if you miss anything. * The 'categories.xml' file is gone - please account for that if you were reading it directly, and consider using AsCategory instead, which offers the same functionality. Features: * Remove the AsDatabase class (Matthias Klumpp) * Use cmakedefine for compile-time features (Matthias Klumpp) * Rename AsDataPool -> AsPool (Matthias Klumpp) * Add placeholder enum for web applications (Matthias Klumpp) * qt: Implement Appstream::Release for the Qt interface (Aleix Pol) * Recognize the "Pantheon" desktop for Elementary (Matthias Klumpp) * Get rid of the menu parser and make AsCategory more useful instead (Matthias Klumpp) * Allow AsComponent to automatically check for list-value duplicates (Matthias Klumpp) * Give bundles their own class (Matthias Klumpp) * Stop shipping the categories.xml file (Matthias Klumpp) * Allow multiple metadata sets in the pool to describe a component (Matthias Klumpp) * Name AppStream metadata styles consistently (Matthias Klumpp) * Allow the 'C' description fallback to be turned off (Iain Lane) * Make AsScreenshot return localized images by default (Matthias Klumpp) * Allow to compare AsRelease versions easily (Matthias Klumpp) * Make get_icon_repository_paths private API (Matthias Klumpp) * ascli: Allow dumping metadata as YAML (Matthias Klumpp) * Use GVariant instead of ProtoBuf based cache (Matthias Klumpp) * Enable stemming by default (Matthias Klumpp) * Make components directly reference their addons, avoiding to query twice (Matthias Klumpp) * Refactor data pool metadata loading (Matthias Klumpp) * Allow setting the AppStream format version when (de)serializing data (Matthias Klumpp) * Always write modern metadata, unless a lower format version is requested explicitly (Matthias Klumpp) * Also find components in searches which have the search keyword in an addon (Matthias Klumpp) * ascli: Add function to convert XML to YAML and vice versa (Matthias Klumpp) * Consistent naming for metadata format and style (Matthias Klumpp) Specification: * spec: Add hint on how the keywords tag should be localized (Matthias Klumpp) Bugfixes: * Resolve unit test failures on arm and mips (Matthias Klumpp) * gir: Correctly annotate ownership transference of GPtrArrays (Matthias Klumpp) * l10n: Drop languages without translations (Matthias Klumpp) * Don't hide symbols in public headers (Matthias Klumpp) * Properly validate desktop-environment strings (Matthias Klumpp) * validator: Fix name/summary check in validate-tree (Matthias Klumpp) * xml: Properly write localized keywords (Matthias Klumpp) * Avoid watching superfluous directories for metadata (Matthias Klumpp) * Update architecture diagrams and optimize PNGs (Matthias Klumpp) * Get rid of Xapian-isms (Matthias Klumpp) Translation: * Chinese (Taiwan) - Chang-Chia Tseng * Chinese (China) - Dingzhong Chen - wsxy162 * French: - Christophe CHAUVET - Claude Paroz * German: - Mario Blättermann * Czech: - Michal Čihař * Italian: - Milo Casagrande * Russian: - Nataliia * Polish - Piotr Drąg * Catalan: - Robert Antoni Buj Gelonch * Ukrainian: - Yuri Chornoivan * Hungarian: - kelemeng Version 0.9.8 ~~~~~~~~~~~~~~ Released: 2016-08-10 Features: * qt: Different approach for storing the icon size and url relation (Aleix Pol) * Strictly validate AppStream IDs (Matthias Klumpp) * Add AsSuggested class (Lucas Moura) * tests: Test merges for suggestions (Lucas Moura) * Add functions handling SPDX license ids and expressions (Matthias Klumpp) * validator: Include a line-hint in the issue report (Matthias Klumpp) * Implement console-application component type (Matthias Klumpp) * validator: Validate files following the new cid scheme properly (Matthias Klumpp) * validator: Validate metadata_license for permissiveness (Matthias Klumpp) * Compress cache data (Matthias Klumpp) * Implement "translate" URL type (Matthias Klumpp) * xml: Implement the suggests tag (Matthias Klumpp) * yaml: Implement reading and writing of Suggests field (Matthias Klumpp) * Consider merge components valid if they have at least an ID (Matthias Klumpp) * yaml: Read/write merge components (Matthias Klumpp) Specification: * spec: Add console-application component type (Matthias Klumpp) * spec: Streamline the requirements for component-ids (Matthias Klumpp) * spec: Define a "translate" URL type (Matthias Klumpp) * spec: Specify the suggests tag (Matthias Klumpp) * spec: Describe the merge property (Matthias Klumpp) * spec: Proofreading fixes (Philip Withnall) Bugfixes: * Make searching for multiple terms work properly again (Matthias Klumpp) * Don't fail on invalid search terms (Matthias Klumpp) * Don't re-instantiate stemmer on each use (Matthias Klumpp) * ascli: Line-wrap unicode texts properly on the console (Matthias Klumpp) * Add missing docs to the API reference (Matthias Klumpp) * tests: Add test description to each test (Matthias Klumpp) * Sort search results by default (Matthias Klumpp) * Fix a few issues with merging (Matthias Klumpp) Version 0.9.7 ~~~~~~~~~~~~~~ Released: 2016-07-20 Notes: * This release contains a lot of very invasive changes and deprecates some API, most notably AsDatabase. Please test this release carefully. There will be an API/ABI break in a future release, so if possible please adjust your code to not use deprecated interfaces. Features: * Don't fall back to Debian screenshots server if none is specified for the distro (Matthias Klumpp) * Split out distro-specific helpers (Matthias Klumpp) * Implement Xapian-less search (Matthias Klumpp) * Use a pure PB cache instead of Xapian (Matthias Klumpp) * qt: Don't rely on Xapian for searches (Matthias Klumpp) * Deprecate AsDatabase (Matthias Klumpp) * Hide internal symbols from the symbols table (Matthias Klumpp) * Allow injecting components into the pool and unittest the cache (Matthias Klumpp) * Add by-category filter to AsDataPool (Matthias Klumpp) * Validate Freedesktop category names (Matthias Klumpp) * Allow building AppStream with stemming support (Matthias Klumpp) * Cache search tokens (Matthias Klumpp) Specification: * docs/quickstart: Clarify the role of releases/provides (Matthias Klumpp) * docs/quickstart: Screenshot images don't need to define width/height (Matthias Klumpp) Bugfixes: * qt: Properly expose enums for introspection (Aleix Pol) * qt: Make it possible to easily output data types using QDebug (Aleix Pol) * xml: Fix formatting of tag (Matthias Klumpp) * xml: Work around non-threadsafe behavior of libxml2 (Matthias Klumpp) * xml: Properly write provides tag (Matthias Klumpp) * Fix code documentation for as_component_get_id (Lucas Moura) * Fix some xmldata methods documentation (Lucas Moura) * cli: Create metainfo directory if it is missing and respect DESTDIR (Matthias Klumpp) Version 0.9.6 ~~~~~~~~~~~~~~ Released: 2016-05-12 Features: * Improve metadata file decompression code (Matthias Klumpp) * validator: Simplify loading of data too (Matthias Klumpp) * Make it easy to compile with Address Sanitizer enabled (Matthias Klumpp) * Allow compiling with UBSan as well (Matthias Klumpp) * Add back support for Travis CI (Matthias Klumpp) * yaml: Write Releases field (Matthias Klumpp) Bugfixes: * qt: Properly check for component validity (Matthias Klumpp) * Ensure decompressed metadata is null-terminated (Neil Mayhew) * validator: Long descriptions are not needed for generic components (Matthias Klumpp) * Make VAPI generation depend on GIR typelibs explicitly (Matthias Klumpp) * Be more verbose when failing to move the cache directory (Matthias Klumpp) * Handle format errors when parsing YAML metadata (Neil Mayhew) Version 0.9.5 ~~~~~~~~~~~~~~ Released: 2016-05-02 Features: * Update README (Matthias Klumpp) * Provide a bit more hints for translators (Matthias Klumpp) * Improve error messages when reading broken XML (Matthias Klumpp) * Load all XML in AsXMLData (Matthias Klumpp) * Implement reading localized images from metadata (Matthias Klumpp) * Write localized images in XML/YAML serialize routines (Matthias Klumpp) * Unify codepaths for checking compatible locales (Matthias Klumpp) * yaml: Implement read/write support for the Languages field (Matthias Klumpp) * xml: Serialize and read languages tag properly (Matthias Klumpp) * validator: Validate files in legacy paths too (Matthias Klumpp) Specification: * spec: Allow localized screenshot images (Matthias Klumpp) Bugfixes: * Refactor icon-finding code and fix rare double-free corruption (Matthias Klumpp) * Properly validate randomly ordered XML tags for duplicates (Matthias Klumpp) * validator: The translation tag is only valid in metainfo files (Matthias Klumpp) * Be slightly less pedantic about size info when reading screenshot images (Matthias Klumpp) * xml: Properly write description tag (Matthias Klumpp) Version 0.9.4 ~~~~~~~~~~~~~~ Released: 2016-04-18 Features: * Handle legacy screenshot tags (Matthias Klumpp) * Print prettier YAML documents (Matthias Klumpp) * yaml: Allow loading of distro metadata slices without header (Matthias Klumpp) * Do not check for installation candidate on minimal validation (Matthias Klumpp) * Don't check if component has an installation candidate before including it (Matthias Klumpp) * Quick-check components only when the pool is fully loaded (Matthias Klumpp) * Support the stub data of GNOME Software (Matthias Klumpp) * Support reading per-component priorities (Matthias Klumpp) * Implement the architecture property (Matthias Klumpp) * Use architecture data to resolve conflicting IDs (Matthias Klumpp) * Add icon size information to generated XML (Matthias Klumpp) * xml: Load size hints for icons (Matthias Klumpp) * l10n: Update Specification: * docs: Explicitly define more minimally required tags per component type (Matthias Klumpp) * Make /usr/share/metainfo the canonical path for upstream metadata (Matthias Klumpp) * spec: Make architecture a property of , and no tag (Matthias Klumpp) * spec: Update the cached icon DEP-11 specification to allow size information (Matthias Klumpp) Bugfixes: * Fix a few minor issues spotted by the YAML validator (Matthias Klumpp) * Correctly build distro XML descriptions from upstream XML (Matthias Klumpp) * Be very strict about which elements are allowed in a description tag (Matthias Klumpp) * yaml: Prevent bool keys (Matthias Klumpp) * ascli: Properly print long descriptions and wrap lines (Matthias Klumpp) * Export less C++ symbols (Matthias Klumpp) * Show a better error message when failing to parse XML (Matthias Klumpp) * Allow adding 0x0 icons (Matthias Klumpp) * yaml: Implement the updated "cached" icon format in a backwards-compatible way (Matthias Klumpp) * apt: Drop flat repository entries (Matthias Klumpp) * Probe less sizes if we already have size information (Matthias Klumpp) * Don't make stubs delete package information from valid components (Matthias Klumpp) * apt: Handle quoted origin entries properly (Matthias Klumpp) Version 0.9.3 ~~~~~~~~~~~~~~ Released: 2016-03-24 Features: * Allow to update an existing component with fresh metadata * Implement YAML serialization * writer: Allow to omit writing a header/root node * cli: Add convenience method to install metainfo files * cli: Add a new "status" command for various diagnostic information * yaml: Allow unicode * Print prettier XML by default * l10n: Update Bugfixes: * Reset umask before building the data cache * apt: Work around APT using server mtime for its downloaded files Version 0.9.2 ~~~~~~~~~~~~~~ Released: 2016-02-28 Features: * qt: Improve usage of Qt containers (Aleix Pol) * qt: Implement Component::extends on the Qt front-end (Aleix Pol) * qt: Also call reserve for bundles on the Qt frontend (Aleix Pol) * validator: strstrip values when reading XML/YAML and validate linebreaks in summaries (Matthias Klumpp) * validator: Check if a description is present (Matthias Klumpp) * Always build with YAML support (Matthias Klumpp) * Move XML parser into its own class (Matthias Klumpp) * Make data-pool use the new YAML-aware metadata parser (Matthias Klumpp) * Simplify data-pool building routine (Matthias Klumpp) * Preprocess extension information for frontends (Matthias Klumpp) * qt: Use the new extensions property (Matthias Klumpp) * Implement translations tag (Matthias Klumpp) * cli: Document the "install" command (Matthias Klumpp) * l10n: Update Specification: * spec: Document the translation tag (Matthias Klumpp) * doc: Don't use tags in documentation (Matthias Klumpp) * spec: Mention the essential tags for a type:desktop component (Matthias Klumpp) Bugfixes: * as-cache-builder: Cope with no YAML documents (Iain Lane) * 50appstream: Don't run if we can't write to the system paths (Iain Lane) * Check for writability instead of root permissions when updating the cache (Matthias Klumpp) * qt: Don't compute screenshot images and then forget about them (Aleix Pol) * Add the missing extends property to the Xapian cache (Matthias Klumpp) * validator: Don't fail validation for description-less addons. (Matthias Klumpp) * Make reading empty cache values more robust (Matthias Klumpp) * Check if GIR scanner & compiler are really installed (Matthias Klumpp) Version 0.9.1 ~~~~~~~~~~~~~~ Released: 2016-02-04 Features: * Improve Qt5 usage (Aleix Pol) * Also use Q_GLOBAL_STATIC for Provides::kindToString (Aleix Pol) * validator: Validate the font component type (Matthias Klumpp) * Implement date property on release tags (Matthias Klumpp) * Ship ITS files from KDE upstream (Matthias Klumpp) Specification: * doc: Clarify why the metadata_license tag is needed (Matthias Klumpp) * spec: Specify font component type (Matthias Klumpp) * doc: Update year and version (Matthias Klumpp) * spec: Specify a date attribute on release tags, containing an ISO8601 time (Matthias Klumpp) Bugfixes: * Lower cmake requirement to 3.1.0 (Harald Sitter) * doc: DEP-11 URLs are no integers (Matthias Klumpp) * apt: Hide appstreamcli stdout output (Matthias Klumpp) * Return specific error when cache was not found (Matthias Klumpp) * apt: Ensure DEP-11 files stay gzip compressed (Matthias Klumpp) * apt: Correctly test for appstreamcli (Matthias Klumpp) * Fix a few memory leaks (Matthias Klumpp) * Work around limitations of GLibs time_val_from_iso8601 function (Matthias Klumpp) Version 0.9.0 ~~~~~~~~~~~~~~ Released: 2015-12-12 Notes: * This release breaks API/ABI, ensure you adjust your depending applications! All code marked as legacy has been removed, as well as some older, now unnecessary classes. Instead, new classes, like AsProvided, have now been introduced. Take a look at the API documentation for furher information. * For Debian-based systems, we now provide full integration with the APT package-manager. Support for this feature needs to be explicitly enabled at build-time. Features: * Use modern GLib macros to declare types (Matthias Klumpp) * Refactor icon handling (Matthias Klumpp) * Refactor handling of provided items (Matthias Klumpp) * Modernize AsCacheBuilder class (Matthias Klumpp) * Modernize AsCategory class (Matthias Klumpp) * Bump API level (Matthias Klumpp) * Make some AsComponent methods private (Matthias Klumpp) * Drop obsolete utility functions (Matthias Klumpp) * Modernize AsDatabase class (Matthias Klumpp) * Drop AsSearchQuery (Matthias Klumpp) * Make AsDistroDetails a modern class (Matthias Klumpp) * Modernize AsMenuParser and AsImage (Matthias Klumpp) * Update validator classes (Matthias Klumpp) * Improve error handling for database queries. (Matthias Klumpp) * Initial code to improve APT integration (Matthias Klumpp) * Refine the AsDataPool class (Matthias Klumpp) * cli: Add new install command to directly install components (Matthias Klumpp) * cli: Make removal of packages by component-id possible (Matthias Klumpp) * Make cache builder smarter in detecting metadata changes (Matthias Klumpp) * l10n: Update translations Bugfixes: * categories: Add missing icon names (Aleix Pol) * Tweak the component-id-collision test slightly (Matthias Klumpp) * AsComponent: Added missing documentation (Corentin Noël) * gir: Fix warnings (Matthias Klumpp) * Always build a new cache if none existed yet in the target location (Matthias Klumpp) * Don't do symlink maintenance if target doesn't exist yet (Matthias Klumpp) Version 0.8.6 ~~~~~~~~~~~~~~ Released: 2015-11-06 Features: * Define autoptr macros for AppStream types (Matthias Klumpp) * Implement the release/size tag (Matthias Klumpp) * validator: Check for missing name / summary in metainfo and .desktop files (Matthias Klumpp) Specification: * spec: Specify the appstream:// URL handler (Matthias Klumpp) * spec: Add new size tag to the release tag (Matthias Klumpp) Bugfixes: * Don't fail displaying package names in component_to_string (Matthias Klumpp) * Fixed VAPI compilation. (Corentin Noël) * qt: Correctly load icon urls again (Matthias Klumpp) * Add missing GIR annotations. (Corentin Noël) * Reinitialize the DEP-11 parser after each file (Corentin Noël) Version 0.8.5 ~~~~~~~~~~~~~~ Released: 2015-10-14 Features: * Update README * Use ProtoBuf to serialize data for the Xapian cache * Annotate the proto definition with descriptions about the messages * Restructure database schema definition * qt: Read screenshots pb data * qt: Fully support the new database layout * Show if component type is unknown in debug output * Implement the release-urgency property * qt: Don't build standalone - this now only leads to potential errors * qt: Add some very basic unit tests * Enable unit-tests unconditionally Specification: * spec: Document the release-urgency property Bugfixes: * Don't stop processing completely, if XML file with errors is found * cli: Fix display of detailed output * Correctly check the database schema version * Move default cache to avoid errors when the old db is still around * qt: Ensure database schema version matches * Don't crash if database schema is unknown Version 0.8.4 ~~~~~~~~~~~~~~ Released: 2015-09-08 Features: * ascli: Validate whole file trees * qt: Align version number with the AppStream version numbers * validator: Always include the filename in validator output * qt: Remove support for Qt4 * ascli: Allow some commands to bypass the cache * Change validator output to make it a bit easier to read * validator: Validate metainfo filenames as well * l10n: Update translations Bugfixes: * Fix crash when parsing metainfo file without all locales enabled * ascli: Make manpage reflect reality Version 0.8.3 ~~~~~~~~~~~~~~ Released: 2015-08-28 Notes: * All the different appstream-* tools are now combined in one appstream-cli tool. Features: * Be less strict about valid screenshot tags * Implement changes on provides/firmware * Rename the 'appstream*' tools to 'appstream-cli' * Implement MediaBaseUrl property * dep11: Implement parsing of Releases Specification: * docs: Document the new naming scheme for type:firmware component IDs * Start documenting DEP-11 in AppStream as well * docs: Mention the DEP-11 validator tool * docs: Completely describe current DEP-11 spec Bugfixes: * The DBus session bus is actually an user bus * Fix component priorization for XML and YAML Version 0.8.2 ~~~~~~~~~~~~~~ Released: 2015-06-26 Notes: * Ubuntu AppInstall support has been removed from this release, as its data never matched the DEP11/ASXML data and pretty much every distribution can offer one of those better data sources now. * This release contains some heavy refactoring, most importantly it removes the "DataProvider" concept and hardcodes the ASXML/DEP11 metadata parsers. This improves maintainability and speed of the AppStream libraries. Please report any bugs you may find! Features: * Refactor DataProvider code (Matthias Klumpp) * Remove DEP-11 validator, it belongs to the dep11 package (Matthias Klumpp) * Add icon information to generated XML (Matthias Klumpp) * Allow more than one checksum kind per AsRelease (Matthias Klumpp) * Propagate bundle information in case multiple components with the same id are found (Matthias Klumpp) Bugfixes: * tests: Add unit test for simple XML description writer (Matthias Klumpp) * Remove some useless code in AsDataPool and recognize DEP-11 data again (Matthias Klumpp) * Fix several quirks in the ASXML description writing code (Matthias Klumpp) * tests: Add rudimentary DEP-11 test (Matthias Klumpp) * Fix a rare double-free corruption (Matthias Klumpp) * Extract correct description markup when reading distro XML (Matthias Klumpp) * Updated POTFILES.in (Piotr Drąg) Version 0.8.1 ~~~~~~~~~~~~~~ Released: 2015-05-31 Features: * qt: Add QLoggingCategory appstreamqt.database (Daniel Nicoletti) * Don't implicitly clear component list when parsing XML (Matthias Klumpp) * Implement support for firmware component type (Matthias Klumpp) * qt: Recognize firmware component type (Matthias Klumpp) Specification: * spec: Document the firmware component (Matthias Klumpp) Bugfixes: * qt: Remove useless moc file on database.cpp (Daniel Nicoletti) * Fix doc symlink install code (Matthias Klumpp) * qt: Load developer_name from database (Matthias Klumpp) * Prevent crash when saving an empty XML document (Matthias Klumpp) * Handle empty XML document as valid file (Matthias Klumpp) * Relicense some remaining files from GPLv3 to GPLv2 (Matthias Klumpp) * Fix typo which prevented description XML from being generated (Matthias Klumpp) Version 0.8.0 ~~~~~~~~~~~~~~ Released: 2015-01-26 Notes: * This release contains a few new tags, and , as well as several specification refinements. Refer to the documentation for detailed explanations. Features: * qt: Make Qt5 default (Aleix Pol) * validator: Hide pedantic issues by default (Matthias Klumpp) * Make origin a public property of the metadata generator (Matthias Klumpp) * Implement the tag (Matthias Klumpp) * qt: Implement support for bundles (Matthias Klumpp) * Update the validator to the latest spec version (Matthias Klumpp) * Implement tag (Matthias Klumpp) * validator: Make it possible to validate a gzip-compressed metadata file (Matthias Klumpp) * Install prebuilt documentation by default (Matthias Klumpp) Specification: * spec: Allow width and height properties for "local" and "remote" icons (Matthias Klumpp) * spec: Add tag (Matthias Klumpp) * spec: Allow bundles of type "xdg-app", additionally to "limba" (Matthias Klumpp) * spec: Make clear that tags may have a child (Matthias Klumpp) * spec: Recommend screenshot sizes for distro-XML (Matthias Klumpp) * spec: Specify the tag (Matthias Klumpp) Bugfixes: * Clean up some dead code in Xapian wrapper (Matthias Klumpp) * Fix a couple of minor issues found by static code analysis (Matthias Klumpp) * asi: Always return a valid exit code (Matthias Klumpp) * Always search for data in /usr/share, ignore DATADIR (Aleix Pol) * Correctly read and propagate language properties (Matthias Klumpp) * Add missing developer_name to database (Matthias Klumpp) * Improve database-writing code to ignore NULL values (Matthias Klumpp) * Properly write localized XML for some tags (Matthias Klumpp) * validator: Fix empty-check for description tag (Matthias Klumpp) * validator: Don't perform sanity checks on the metadata tag (Matthias Klumpp) Version 0.7.6 ~~~~~~~~~~~~~~ Released: 2015-01-14 Notes: * This release contains some API and ABI breaks. Recompiling against the new library should be the only necessary step for most software, if you were not using deprecated functionality. Features: * Update translations * Update database location for possible fast language switching (Matthias Klumpp) * Use colorful output when using GCC and compiling in maintainer-mode (Matthias Klumpp) * Make API to parse distro XML in AsMetadata public (Matthias Klumpp) * Allow building distro XML from a list of AsComponent objects (Matthias Klumpp) * Convert AsComponent into a "modern" GObject (Matthias Klumpp) * Add extra multilanguage support to AsComponent, which is needed for complete serialization (Matthias Klumpp) * Remove functions marked as deprecated (Matthias Klumpp) * Add convenience functions to save generated XML (Matthias Klumpp) Bugfixes: * Move component serialization to AsMetadata (Matthias Klumpp) Version 0.7.5 ~~~~~~~~~~~~~~ Released: 2014-11-28 Features: * Update translations Specification: * doc: Clarify meaning of icon types (Matthias Klumpp) Bugfixes: * dep11: Fix memory leak in DEP-11 parser (Matthias Klumpp) * Fix origin<->name confusion (Matthias Klumpp) Version 0.7.4 ~~~~~~~~~~~~~~ Released: 2014-10-30 Features: * Add local icon directories to the icon search path (Matthias Klumpp) * Properly handle origin and icons in size-specific directories (Matthias Klumpp) * Allow client applications to fetch icons in multiple sizes (Matthias Klumpp) * qt: Implement multisize-icons (Matthias Klumpp) * qt: Add documentation to the deprecated methods (Matthias Klumpp) * validator: Ensure that stock and cached icons only contain the icon basename (Matthias Klumpp) Bugfixes: * dep11: refine quote test (Matthias Klumpp) * Don't count it as problem if no metadata is found (Matthias Klumpp) * Check if AppInstall directory exists, before attempting to scan it (Matthias Klumpp) * Don't query system categories while processing metadata (Matthias Klumpp) Version 0.7.3 ~~~~~~~~~~~~~~ Released: 2014-10-10 Features: * Implement basic support for the new icon cache layout (Matthias Klumpp) Specification: * spec: Update the icon-cache layout to allow icons with larger sizes (Matthias Klumpp) Bugfixes: * Treat the text/plain mimetype equal to YAML or XML (Matthias Klumpp) * Use camel-case for the AppStream GIR (as used everywhere else) (Matthias Klumpp) * qt: Include QMultiHash (Aleix Pol) * Fix wrong DATADIR variable (Matthias Klumpp) Version 0.7.2 ~~~~~~~~~~~~~~ Released: 2014-09-22 Notes: * This release drops the PackageKit plugin (and the build dependency on PK alltogether). This means that AppStream will no longer automagically update the Xapian index. Please make sure that tools or packages which modify the AppStream distro XML/YAML call 'appstream-index refresh' when they are done. (reason for dropping the plugin is PackageKit removing support for plugins with its 1.0 release) Features: * Remove the PackageKit plugin (Matthias Klumpp) * Use GNUInstallDirs (Matthias Klumpp) Bugfixes: * Ensure that we do not convert NULL to a C++ string (Matthias Klumpp) * Fix check for generic/unknown component in XML serialization (Matthias Klumpp) * Fix tests on a system which doesn't have a 'categories.xml' (Matthias Klumpp) * Fix some compiler warnings with clang (Matthias Klumpp) Version 0.7.1 ~~~~~~~~~~~~~~ Released: 2014-09-08 Features: * qt: Make it possible to build AppstreamQt against Qt5 (Aleix Pol) * qt: Introduce a method to check if a Qt Appstream::Component is fully initialized (Aleix Pol) * qt: Make it possible to query the database for the components given a package name (Aleix Pol) * Improve generator performance by caching the short language code (Matthias Klumpp) * qt: Print component id instead of package name in warning messages (Matthias Klumpp) * Improve loading of uncompressed distro-metadata (Matthias Klumpp) * Allow manually defining the default locale for a data pool (Matthias Klumpp) * dep11: Add validator for the DEP-11 file-format (Matthias Klumpp) * Add basic function to convert AsComponent to XML (Matthias Klumpp) * dep11: Implement DEP-11 data parser based on libyaml (Matthias Klumpp) * Share icon-refinement and component-completion between all data providers (Matthias Klumpp) Bugfixes: * qt: Respect the global install paths set by the toplevel CMake file (Matthias Klumpp) * docs: get rid of "childrens" (Vladimír Čunát) * Don't crash if no timestamp was defined (Matthias Klumpp) * Fix FTBFS with Clang (Matthias Klumpp) * docs: Update architecture images to reflect reality (Matthias Klumpp) * Install PK plugin into PK >= 0.9.x plugin path (Matthias Klumpp) * Don't crash in as_component_to_string() if no packages are set (Matthias Klumpp) * Don't crash when generating the database in case a component has no categories (Matthias Klumpp) Version 0.7.0 ~~~~~~~~~~~~~~ Released: 2014-07-16 Notes: The AppStream code has been relicensed from LGPL-3+ to LGPL-2.1+ There have also been smaller API breaks in libappstream, see the list below for information about that. Features: * Allow overriding of watched data dirs (Matthias Klumpp) * More work on the cache-builder to be more flexible (Matthias Klumpp) * Add DataPool helper class (Matthias Klumpp) * Do some major refactoring on how the cache is created (Matthias Klumpp) * validate: Process multiple files (Matthias Klumpp) * Get rid of as_strv_dup (Matthias Klumpp) * Implement support for the "addon" component type (Matthias Klumpp) * Implement support for dbus provides type (Matthias Klumpp) * Allow fetching data by component type (Matthias Klumpp) * Relicense to LGPLv2.1+ and GPLv2+ (Matthias Klumpp) * Drop some deprecated API (Matthias Klumpp) * Add some limited support for parsing legacy upstream metadata files (Matthias Klumpp) * Implement developer_name tag (Matthias Klumpp) * Allow querying the database for multiple component types with one query (Matthias Klumpp) * Implement 'languages' tag (Matthias Klumpp) * Improve code which loads urls from the database (Matthias Klumpp) * validator: Correctly check for compliant localization of tags (Matthias Klumpp) * Share database definition between libas and libas-qt (Matthias Klumpp) * appinstall: Handle NoDisplay as well, and treat OnlyShowIn as compulsority (Matthias Klumpp) * qt: Make it possible to compile only the Qt library (Matthias Klumpp) * Optimize database generation process to save some time (Matthias Klumpp) * asi: Don't use GObject class to handle the tool's internals (Matthias Klumpp) * asi: Improve command syntax (Matthias Klumpp) * asi: Further code improvements (Matthias Klumpp) * Expose internal options for database and data placement to asi (Matthias Klumpp) * Improve database refresh API (Matthias Klumpp) * tests: Make tests work standalone (Matthias Klumpp) * vapi: Move to contrib, it's not static data (Matthias Klumpp) * Update global categories definition (Matthias Klumpp) * Implement support for multiple package names per component (Matthias Klumpp) * qt: Implement support for screenshots (Matthias Klumpp) * qt: More methods to retrieve components from the database (Matthias Klumpp) * docs: Install gtk-doc documentation (Matthias Klumpp) * Use XZ compression for release tarball (Matthias Klumpp) * Use the same datasource-dir method for AsDataPool which was used for AsBuilder (Matthias Klumpp) * qt: Parse the screenshot xml and store it in some relevant datatypes (Sune Vuorela) * qt: Acually return the map built when converting UrlKinds to strings (Sune Vuorela) * qt: Parse and handle the Provides part of the appstream data (Sune Vuorela) * Some Qt cleanups after a review by Andreas. (Sune Vuorela) * qt: Create a database constructor that uses the default system path (Sune Vuorela) * qt: Adapt to multiple package names for a component (Sune Vuorela) Specification: * spec: Use UNIX epoch instead of YYYYMMDD for timestamps (Matthias Klumpp) * spec: Add new "languages" tag to distro XML (Matthias Klumpp) * spec: Add new component type: Addon (Matthias Klumpp) * spec: Define a 'dbus' type as new 'provides' element (Matthias Klumpp) * spec: Specify a developer_name tag (Matthias Klumpp) * spec: Allow an update_contact tag in upstream-metadata (Matthias Klumpp) * spec: Allow /var/cache location for icons (Matthias Klumpp) * spec: Allow multiple definitions of the 'pkgname' tag (Matthias Klumpp) * spec: Hide multiarch install path section (Matthias Klumpp) Documentation: * docs: Add quickstart page template (Matthias Klumpp) * docs: Export documentation by default (Matthias Klumpp) * docs: Restructure application description and add quickstart page (Matthias Klumpp) * docs: Explicitly allow the mimetypes tag in generic components (Matthias Klumpp) * docs: Sketch section about translation (Matthias Klumpp) * docs: Various fixes for the spec, add missing project_license to generic component (Matthias Klumpp) * docs: Add Intltool translation Automake integration hints (Matthias Klumpp) * docs: Sketch section about addons (Igor Gnatenko) * docs: Fix some quirks in the distro XML spec (Matthias Klumpp) * docs: Update app quickstart guide and add example screenshots (Matthias Klumpp) Bugfixes: * Fix some bugs in handling of provides-items (Matthias Klumpp) * Fix some annotations & remove cruft (Matthias Klumpp) * Update tests and fix a memory leak (Matthias Klumpp) * validator: Improve handling of translated metadata files (Matthias Klumpp) * Fix issue when loading compressed metadata files (Matthias Klumpp) * qt: Added 'const' to the description (Floris-Andrei Stoica-Marcu) * Print a better result message on cache update in case of metadata errors (Matthias Klumpp) * Fix crash in AppInstall data provider (Matthias Klumpp) * Remove bogus g_free() of paths strv in ASXML provider (Matthias Klumpp) * Get rid of explicit include of config.h (Matthias Klumpp) * Fix typo in appstream-index manpage (Sune Vuorela) * validator: Only test if valid tags are empty (Matthias Klumpp) * Make creating the Xapian cache at different locations work again (Matthias Klumpp) * Remove leftover cruft from config.h.in (Sune Vuorela) * asi: Respect the no-color option (Matthias Klumpp) Version 0.6.2 ~~~~~~~~~~~~~~ Released: 2014-05-12 Features: * Deprecate get_homepage in favour of get_url * Store all urls in the database * Split validation into new AsValidator for future extension * Heavily improve metadata validator, add new as-validator binary * Add methods to check if component is compulsory or in a specific category * Add function to pretty-print description markup and use it in asi-tool * Implement missing support for mimetypes * Add manpage for appstream-validate * Allow fast searching for mimetype handlers Specification: * spec: Use subdirectories for multiarch metadata * spec: Exclusively use SPDX license tags * spec: Update screenshot spec to reflect reality * docs: Fix some quirks and issues * docs: Rework url information as variablelist * spec: Rename "manual" url type to "help" Bugfixes: * Ensure active metadata locale does not have an UTF-8 suffix * Refine icon path/url detection for applications * Deprecate idname and make Component header nicer to work with * Fix bug in category-loading and display categories in the asi-tool * Fix multiple potential crashes when parsing upstream metadata * Make sure we don't use deprecated methods internally anymore * tests: Run database tests on private db copy * asi-tool: Fix small (but annoying) warning * asi-tool: Adjust manpage to reflect reality * validator: Create better log messages Version 0.6.1 ~~~~~~~~~~~~~~ Released: 2014-04-24 Features: * Make AsMetadata handle (almost) all XML parsing (Matthias Klumpp) * Add function to parse upstream metadata in AsMetadata (Matthias Klumpp) * Add methods to set/get locale used for metadata parsing (Matthias Klumpp) * Add function to load metadata from memory (Matthias Klumpp) * Implement a parser mode to abstract away differences in AS metadata (Matthias Klumpp) * Auto-generate Vala API file, if desired (Matthias Klumpp) * Add functions to get a component by it's ID (Matthias Klumpp) * Index terms for provided items (Matthias Klumpp) * Allow fetching components by the items they provide (Matthias Klumpp) * Parse AppStream data in /var/lib/app-info/xmls (Matthias Klumpp) * Implement priority property (Matthias Klumpp) Specification: * spec: Add priority property for components in distro-metadata (Matthias Klumpp) Bugfixes: * Fix libappstream pkgconfig (Matthias Klumpp) * Make data-providers emit "component" signal (instead of "application") (Matthias Klumpp) * Make translation possible again (Matthias Klumpp) * Handle lib directory suffix on distributions like Fedora (Rex Dieter) * docs: Fix examples to use the tag correctly (Matthias Klumpp) * Print error if compiled with -DVAPI, but no vapigen was found (Matthias Klumpp) * Improve documentation and annotations (Matthias Klumpp) * Improve API for provides-tests (Matthias Klumpp) * Implement strict parsing of the description tag in upstream metadata (Matthias Klumpp) * docs: Fix the section on 3rd-party screenshot services (Matthias Klumpp) Version 0.6.0 ~~~~~~~~~~~~~~ Released: 2014-04-16 Notes: This release breaks both the library API and the Appstream specification. Please adjust your tools to work with Appstream 0.6, especially take a look at the documentation for the new Appstream XML specification. Features: * Add new AsComponent class (Matthias Klumpp) * Rewrote libappstream in plain C (Matthias Klumpp) * client: Add option for detailed output (Matthias Klumpp) * Use "kind" instead of "ctype" for component types (Matthias Klumpp) * Implement compulsory-for-desktop (Matthias Klumpp) * Some refactoring, additions and improvements (Matthias Klumpp) * Correctly handle component types according to the 0.6 spec (Matthias Klumpp) * Bring back thumbnail support for ss.d.n services (Matthias Klumpp) * client: Improve screenshot url display (Matthias Klumpp) * Implement support for (Matthias Klumpp) * Implement support for (Matthias Klumpp) * Some API future-proofing (Matthias Klumpp) * Add helper to generate Vala VAPI file (Matthias Klumpp) Specification: * docs: Initial documentation on components and lots of restructuring (Matthias Klumpp) * docs: Add FontData meta-info spec (Matthias Klumpp) * docs: Add description of input-method metainfo (Matthias Klumpp) * docs: Some changes on ASXML for component-support (Matthias Klumpp) * docs: Clarify font classifier (Matthias Klumpp) * spec: Don't use specialized tags, everything is a component. Kill types (Matthias Klumpp) * spec: All upstream meta-info goes to /usr/share/appdata now (Matthias Klumpp) * specs: Update Appstream example XML for latest changes (Matthias Klumpp) * specs: Add new tag to Appstream distro spec (Matthias Klumpp) * spec: Add "origin" property for components tag (Matthias Klumpp) * spec: Define icon repository (Matthias Klumpp) * spec: Component-type is "desktop" for apps now (Matthias Klumpp) * spec: Add parent for release tags (Matthias Klumpp) * spec: Allow more url types (Matthias Klumpp) * spec: Clarify how the description tag should be translated (Matthias Klumpp) * spec: Hide fonts for now - the spec is not yet ready (Matthias Klumpp) * spec: Add component type for codecs (Matthias Klumpp) * specs: Update project mission statement (Matthias Klumpp) * spec: Use metadata_license instead of the BE version (Matthias Klumpp) * spec: Add note on multiarch-support (Matthias Klumpp) Bugfixes: * Make parallel compilation possible (Matthias Klumpp) * Allow compiling with -Wall -Werror (Matthias Klumpp) * Prevent identifier collisions in the database (Matthias Klumpp) * Some fixes for the introspection build process (Matthias Klumpp) * Some basic fixes for the XSD schemes (Matthias Klumpp) Version 0.5.0 ~~~~~~~~~~~~~~ Released: 2014-02-23 Features: * Parse screenshot data and make it available via library API (Matthias Klumpp) * Add screenshot data to the Xapian database (Matthias Klumpp) * Add function to dump screenshot data as XML (Matthias Klumpp) * cli: Add colored output to the command-line tool (Matthias Klumpp) * cli: Display some screenshot information, if it is found (Matthias Klumpp) * cli: Allow the tool to trigger cache rebuilds (Matthias Klumpp) * Add new API to return available screenshot sizes (Matthias Klumpp) * Always compile tests (Matthias Klumpp) * Improve Xapian search capabilities (Matthias Klumpp) Specification: * spec: Deprecate appcategory element in favour of category element (Matthias Klumpp) * docs: Update architecture images (Matthias Klumpp) * docs: Remove reference to OCS (Matthias Klumpp) * spec: Add caption for screenshots (Matthias Klumpp) Bugfixes: * Always install appstream.pc in correct libdir (Matthias Klumpp) * Always rebuild the database if watchfile is missing (Matthias Klumpp) * Don't throw an error if we are on a system without the ASXML dir (Matthias Klumpp) * Fix some memory leaks (Matthias Klumpp) * Fix some strange vala compile issue with newer valac versions (Matthias Klumpp) Version 0.4.0 ~~~~~~~~~~~~~~ Released: 2013-10-20 Features: * Include /var/cache/app-info as location for AppStream XMLs (Matthias Klumpp) * Search for icons in the caches too (Matthias Klumpp) * Remove API for manually refreshing the Xapian cache (Matthias Klumpp) * Remove refresh action from appstream-index tool (Matthias Klumpp) * Implement PackageKit plugin to refresh the cache (Matthias Klumpp) * Implement support for compressed AppStream files (Matthias Klumpp) * Support all icon types in AppStream XML parser (Matthias Klumpp) * Parse description tags in AppStream XML (Matthias Klumpp) * Update database schema, breaking USC compatibility (Matthias Klumpp) * Only rebuild AppStream Xapian cache if data has changed (Matthias Klumpp) * Store app homepage and iconpath correctly in new database layout (Matthias Klumpp) * docs: Document important parts of AppStream (Matthias Klumpp) * docs: Document appcategories tag (Matthias Klumpp) * docs: Add example XML for AppStream files (Matthias Klumpp) * docs: Briefly describe the screenshot service (Matthias Klumpp) * docs: Include preexisting architecture graphics and fix some quirks (Matthias Klumpp) * docs: Specify how icons will be handled and which ones take priority (Matthias Klumpp) Specification: * spec: Add project_group element (Matthias Klumpp) * spec: The "remote" type is much more precise than "url" (Matthias Klumpp) * spec: Add documentation tag to the AppStream spec (Matthias Klumpp) * spec: Enforce at least one id, pkgname, name, summary and icon tag (Matthias Klumpp) * spec: Define and describe project_license tag (Matthias Klumpp) * spec: Add screenshots to the AppStream XML spec (Matthias Klumpp) * spec: Add new compulsory_for_desktop tag (Matthias Klumpp) Bugfixes: * Ensure that we have GI set up, before compiling libappstream (Matthias Klumpp) * Set has_type_id=false for Xapian binding (Matthias Klumpp) * Ensure we do always target the right GLib version (Matthias Klumpp) * Fix crash in AppStream PackageKit plugin (Matthias Klumpp) Version 0.3.1 ~~~~~~~~~~~~~~ Released: 2013-06-26 Bugfixes: * Use a GPtrArray for search results * Adjust unit-tests and client tool Version 0.3.0 ~~~~~~~~~~~~~~ Released: 2013-06-10 Features: * Add command-line method to search for apps (Matthias Klumpp) * Restructure code to clearly separate client and daemon (Matthias Klumpp) * Make DBus API an internal implementation detail (Matthias Klumpp) * Rewritten and more advanced XDG menu file parser (Matthias Klumpp) * Implemented new Category handling (Matthias Klumpp) * Many improvements in documentation (Matthias Klumpp) * Implement API to access any AppStream-compliant screenshot service (Matthias Klumpp) Bugfixes: * Fix creation of missing database (Matthias Klumpp) * Make UAI more failsafe (Matthias Klumpp) * Improve error handling and command-line output (Matthias Klumpp) * Greatly improve search results (Matthias Klumpp) * Fix translation template (Matthias Klumpp) Version 0.2.0 ~~~~~~~~~~~~~~ Released: 2013-03-15 Features: * Add distro-agnostic category definition (Matthias Klumpp) * Make DBus API more failsafe (Matthias Klumpp) * Place Xapian cache in different directory (Matthias Klumpp) * Add release script and release instructions (Matthias Klumpp) Bugfixes: * Kill some compiler warnings (Matthias Klumpp) * Print error message if xmlto was not found (Matthias Klumpp) * Make --nowait option finally work again (Matthias Klumpp) * docs: Build C API documentation (Matthias Klumpp) * Print better message if category dir is null (Matthias Klumpp) Version 0.1.0 ~~~~~~~~~~~~~~ Released: 2012-10-02 Notes: * Initial release