Version 0.10.1
~~~~~~~~~~~~~~
Released: 2025-1ß-02

Features:
 * engine: Limit default parallelism for main processing operations
 * Skip intermediate data check if gcid is empty
 * Print if data remains after manually removing a package
 * engine: Add function to process all suitable data at once

Bugfixes:
 * tests: Allow network test to have all tests skipped
 * utils: Just use C++ standard library for copying directories
 * Guard against null values in the database
 * zarchive: Properly normalize paths
 * yaml: Make sure Time field is always read as string
 * Explicitly set up UTF-8 locale
 * Ensure we aren't running on a bad libfyaml
 * engine: Actually open the locale unit, so it can be used to find locale
 * Don't just skip processing most new packages

Miscellaneous:
 * Update the snapcraft file

Contributors:
 Matthias Klumpp

Version 0.10.0
~~~~~~~~~~~~~~
Released: 2025-09-16

Notes:
 * This release switches from using the D programming language to C++23.
   This change should simplify maintenance of the tool and allow it to
   be more compatible with other tooling. C++23 adopted a lot of D's
   features, so this is a pretty direct port - still, issues may exist
   even though this release has been tested extensively. So, perform your
   own tests and report any issues!

Features:
 * Translate the project from D to C++23
 * zarchive: Support reading from hardlinks
 * Use backward-cpp if available for automated crash backtraces
 * Add optimization for repeated reads from large archives
 * Add support for loading JPEG-XL icons

Bugfixes:
 * zarchive: Ensure parent path is created before opening file
 * debian: Ensure legacy-style repos get package descriptions for components
 * Create document timestamps in the right format
 * iconhandler: Render SVG with new API and properly report errors again

Miscellaneous:
 * Add and enforce an npm lockfile
 * Avoid some unnecessary data copies and refcounting where possible

Contributors:
 Joey Riches, LN Liberda, Matthias Klumpp

Version 0.9.2
~~~~~~~~~~~~~~
Released: 2025-08-12

Features:
 * data: Add tooltip hover for plot graph in section_pages.html

Bugfixes:
 * snap: Don't include our glib
 * freebsd backend: Start from meta.conf when gathering repository metadata
 * freebsd: catch up with new pkg repository layout
 * rpmmd: Port to dxml
 * rpmmd: Download packages on-demand
 * Sanitize UTF-8 before adding it to the database
 * Drop removed no-bin-links argument from yarn invocation

Miscellaneous:
 * Add AdwaitaLegacy to themeNames
 * snap: Update some dependency versions
 * snap: Build using system LDC and glibd
 * Install JS stuff with NPM
 * metainfo: Add developer name

Contributors:
 Amin Bandali, Balló György, Gleb Popov, Joey Riches,
 Matthias Klumpp

Version 0.9.1
~~~~~~~~~~~~~~
Released: 2023-11-11

Features:
 * Implement a FreeBSD backend
 * Add I/O caching for the FreeBSD backend
 * Allow to manually specify a GIR directory at build time
 * Include Yarn lockfile
 * Add release information to metainfo file
 * Build against AppStream 1.0

Bugfixes:
 * Make building the RPMMD backend optional
 * web: Better split archive sections
 * ubuntu: Don't fail on repositories with no language packs
 * utils: mkdirRecurse instead of mkdir inside parallel

Miscellaneous:
 * Snap updates
 * Add documentation how to install from Flathub
 * Autoformat source code

Contributors:
 Gleb Popov, Heather Ellsworth, Matthias Klumpp, Pablo Correa Gómez

Version 0.9.0
~~~~~~~~~~~~~~
Released: 2023-01-26

Features:
 * Allow more complex repo-level metadata additions

Documentation:
 * docs: Document modifications.json
 * docs: document values of "Backend" in asgen config
 * docs: clarify directory structure

Bugfixes:
 * Make MetadataType override work again
 * Ensure all user feature flags are applied properly again
 * Retry failed download 4 times by default
 * Even process an empty repository if action is forced
 * Don't fail if icon directory for injected metadata is missing
 * ci: Improve scripts and don't use deprecated commands
 * ci: Install ffmpeg in the Fedora images

Contributors:
 Matthias Klumpp, Miroslav Suchý, Neal Gompa

Version 0.8.8
~~~~~~~~~~~~~~
Released: 2022-04-10

Bugfixes:
 * Use higher stack size for archive read generator

Contributors:
 Matthias Klumpp

Version 0.8.7
~~~~~~~~~~~~~~
Released: 2022-02-22

Bugfixes:
 * Fix build on 32-bit architectures
 * Set CAInfo on compose instance as well
 * Don't unlink components of fake packages
 * Process icons by suite/section across all architectures
 * Fix a bunch of Meson and D deprecation warnings

Version 0.8.6
~~~~~~~~~~~~~~
Released: 2021-12-22

Notes:
 * This is the first release to fully use libappstream-compose for
   almost all metadata analysis (except icon processing, which needs
   special care).

Features:
 * Reimplement data extractor using the compose API
 * Enable screencasts in compose based on our screenshotVideos feature flag
 * Run external metadata through the exact same processing as all other data
 * Redirect glib debug messages to our own logging if in verbose mode
 * Adjust parallel processing work unit sizes for seeding
 * ci: Add Fedora to the CI environment

Bugfixes:
 * Fix build with GLib >= 2.69
 * engine: Protect iconTarFiles variable when scanning for icons in parallel
 * Resolve some issue tag conflicts with as-compose
 * Control batch processing better to enable better extractor reuse
 * Add duplicate-metainfo exemption for injected data
 * Improve explanation of the "no-metainfo" tag
 * Don't emit "description-from-package" if "no-metainfo" was already present

Contributors:
 Neal Gompa (ニール・ゴンパ), Matthias Klumpp

Version 0.8.5
~~~~~~~~~~~~~~
Released: 2021-08-28

Features:
 * snap: Set `grade` to `stable`
 * Improve metainfo/desktop deduplication code
 * Use ascompose for adding translation status data

Bugfixes:
 * Always mark desktop-file as handled when handling its metainfo file (#91)
 * Fix compilation due to broken generated GdkPixbuf code
 * config: Move setUseOptipng call after we determine if optipng is available
 * snap: Add glib{,-networking} to asgen's stage-packages
 * snap: Build libas from a tag
 * Adjust for compose API changes

Contributors:
 Balló György, Dan Printzell, Iain Lane and Matthias Klumpp

Version 0.8.4
~~~~~~~~~~~~~~
Released: 2021-03-02

Features:
 * Replace our HashMap with native associative arrays
 * Switch back to using the curl-based downloader again
 * Use the desktop-entry parsing code from appstream-compose
 * Try finding icons in /usr/share/icons root directory as well
 * Update our own metainfo file and validate it

Bugfixes:
 * snap: Set LD_LIBRARY_PATH to the stage dir for asgen's build
 * snap: Install curl as a normal build-package
 * snap: Build with -j1
 * debian: Forget a package's filename when removing its temporary dir
 * debian: Add more synchronization
 * zarchive: Log the error when we can't open an archive
 * various: Improve builddir != srcdir builds and build the snap like this
 * Replace theme icon generator concurrency with a range
 * snap: Build AppStream in debugoptimized mode instead of release mode

Contributors:
 Iain Lane, Matthias Klumpp

Version 0.8.3
~~~~~~~~~~~~~~
Released: 2021-02-02

Notes:
 * This release requires libappstream-compose from the AppStream project to build.
   The library is still in progress and currently has an unstable API, but
   is developed in sync with appstream-generator, so asgen can safely
   depend on it.

Features:
 * Elevate no-metainfo presence to a warning by default (Matthias Klumpp)
 * Ignore all apps with only desktop-entry files using OnlyShowIn (Matthias Klumpp)
 * Make use of the helper classes provided by appstream-compose (Matthias Klumpp)
 * Add editorconfig (Matthias Klumpp)
 * Use ascompose result type as base for the generator result container (Matthias Klumpp)
 * Use the validator helper function from appstream-compose (Matthias Klumpp)
 * Use metainfo parsing helper from appstream-compose (Matthias Klumpp)
 * alpine: add capabilities to download packages via HTTP (Rasmus Thomsen)
 * config: allow overriding export dir via --export-dir (Rasmus Thomsen)

Bugfixes:
 * Add explicit option to disable network-dependent tests (Matthias Klumpp)
 * Add missing CSS styling for permalinks to Debian template (Matthias Klumpp)
 * Captialize "MetaInfo" the same everywhere in hint messages (Matthias Klumpp)
 * Use binding generator to create the missing AppStream Utils functions (Matthias Klumpp)
 * Never open contents cache DB env more than once in the same thread (Matthias Klumpp)
 * Re-enable LMDB TLS support (Matthias Klumpp)
 * downloader: Check read byte count before appending to buffer (Matthias Klumpp)
 * Ensure export directory paths are sane, absolute paths all the time (Matthias Klumpp)

Version 0.8.2
~~~~~~~~~~~~~~
Released: 2020-05-12

Features:
 * Add experimental Snapcraft build definition
 * snap: Move to strict confinement (Iain Lane)
 * snap: Lots of debugging & integration work (Iain Lane)
 * Find external binaries in PATH instead of hardcoding absolute paths to them
 * Add static bindings for libsoup
 * Switch to new libsoup-based downloader, drop Curl
 * Always log the generator version for some operations
 * Display more verbose debug messages when downloads are retried
 * Better messages for network connection errors
 * Support Ubuntu language packs for l10n status info extraction
 * Make permalink anchors visible in HTML output
 * alpine: Add new backend for Alpine Linux (Rasmus Thomsen)

Bugfixes:
 * Pull a few Mustache engine code improvements from upstream
 * Throw a better error message in unit tests when ffprobe isn't found
 * tests: Skip video metadata check if ffprobe can not be found
 * Check if our GdkPixbuf is able to handle all essential image formats
 * Slighty reduce default logging verbosity when finding icons
 * Give up icon search when component was rejected in icon storage routine
 * Swallow bad last-modified times from servers instead of freaking out
 * Make downloader a thread-local singleton (instead of thread-global)
 * Create XDG runtime dir in case it is missing
 * Make a failure to read an archive symlink target non-fatal
 * Print available font names in issue report if no matching font was found
 * Handle unexpected NULL-byte files better
 * Find Yarn, even when it was renamed
 * Strip out release artifacts for components that have a package

Version 0.8.1
~~~~~~~~~~~~~~
Released: 2020-01-20

Bugfixes:
 * Don't crash if a gettext locale has no strings
 * Reject packages which should have a long description but don't have one
 * debian: Search for bz2 files again, i18n still uses those
 * Work around some curl/D behavior changes and make HTTPS downloads work again
 * Check suite status before removing hints/components
 * Don't fail download on HTTP status code 302
 * Properly fail icon search in all failure cases, add more debug logging
 * Ensure icon tarballs are closed immediately after writing to them
 * Flip around sorting of suites on HTML reports

Version 0.8.0
~~~~~~~~~~~~~~
Released: 2019-09-24

Notes:
 * This release needs FFmpeg installed if video screenshots should
   be permitted. No transcoding will be done. Check out the options
   to modify this feature in the documentation.

Features:
 * Add Igor Khasilev's container implementations to the source
 * Replace EMSI containers with built-in implementation
 * Bump dependency on AppStream
 * Fix build with latest AppStream
 * Implement improved validation issue reporting
 * Always build registry of all hint tags, instead of adding them on-demand
 * Add AV1 video sample for video support tests
 * Add video tag support, analyze and store videos
 * Use generic download method for downloading screenshots as well

Bugfixes:
 * Make dscanner happy again
 * Drop wrap files: We don't need them anymore
 * debian: Don't check for bz2 compressed indices
 * Only add remote icons if we have a mediaBaseUrl and are permitting image caches
 * Validate injected metainfo files as well
 * Ignore pedantic issues in HTML reports
 * Fix getFileContents when acting on remote data
 * XML-escape validator explanations

Version 0.7.7
~~~~~~~~~~~~~~
Released: 2019-02-24

Features:
 * Speed up locale search by moving it to its own database cache (Matthias Klumpp)

Bugfixes:
 * Component removal requests don't need to have a package-name set (Matthias Klumpp)

Version 0.7.6
~~~~~~~~~~~~~~
Released: 2019-01-10

Features:
 * Limit the amount of release metadata in output (Matthias Klumpp)
 * Implement icon loading for injected metadata (Matthias Klumpp)
 * Prefer some SFNT font metadata over internal heuristics (Matthias Klumpp)
 * Implement Gettext locale processing (Matthias Klumpp)
 * Use a struct instead of bitfield to store enabled generator features (Matthias Klumpp)
 * Refactor locale statistics loader (Matthias Klumpp)
 * Explicitly remove temporary package data after reading locale info (Matthias Klumpp)
 * Make arch-specific injected metadata override arch:all data (Matthias Klumpp)

Bugfixes:
 * Complain if the user wants to associate a component with a fake package (Matthias Klumpp)
 * Check that fonts and OS components have an icon (Matthias Klumpp)
 * Sanitize image URLs before attempting download (Matthias Klumpp)

Version 0.7.5
~~~~~~~~~~~~~~
Released: 2019-01-04

Features:
 * Load components for Arch Linux (Balló György)
 * Embed mustache-d code (Matthias Klumpp)
 * Protect against HTTPS-to-HTTP downgrades (Matthias Klumpp)
 * Allow asgen maintainer to mark components for removal and inject
   additional metainfo files (Matthias Klumpp)
 * docs: Document the metainfo injection feature (Matthias Klumpp)

Bugfixes:
 * Fix a few issues found by dscanner (Matthias Klumpp)
 * Properly error out on HTTP 404 status codes (Matthias Klumpp)
 * Add wrapfile for mir-core (Matthias Klumpp)
 * Also ignore web applications without an icon (Matthias Klumpp)

Version 0.7.4
~~~~~~~~~~~~~~
Released: 2018-08-04

Features:
 * Write CID<->GCID mapping table as additional output data (Matthias Klumpp)
 * Don't rebuild GLibD as part of asgen, use the shared library instead (Matthias Klumpp)
 * Add hint to add launchable tag if .desktop file is missing (Matthias Klumpp)
 * Use posix_spawn codepath for optipng if possible via GLib (Matthias Klumpp)
 * Unconditionally add stock-type icon if desktop-file allows for it (Matthias Klumpp)
 * Allow font languages to be specified in a languages tag (Matthias Klumpp)
 * Improve font language processing with metainfo hints (Matthias Klumpp)
 * fonts: Sort selected font styles, prefer regular style for samples (Matthias Klumpp)
 * fonts: Use a random pangram for fonts supporting English (Matthias Klumpp)
 * fonts: Assume 100% language support for all locale mentioned in font data (Matthias Klumpp)

Bugfixes:
 * Fix build with phobos 2.081 (Antonio Rojas)
 * Depend on non-broken Meson version (Matthias Klumpp)
 * fonts: Always prefer English for samples if font supports it (Matthias Klumpp)
 * Initialize font icon lookup table only if there are fonts (Matthias Klumpp)

Version 0.7.3
~~~~~~~~~~~~~~
Released: 2018-04-26

Features:
 * Don't include desktop files with an empty OnlyShowIn and complain about that
 * Improve decompression code slightly
 * Improve code to check for inclusion of .desktop files
 * Optimize category filter function
 * ubuntu: Use GC managed arrays for langpack info storage
 * ubuntu: Hold copy of language pack array per package
 * ubuntu: Don't load language packs multiple times, cleanup index data properly
 * Close package from a base suite immediately in the seeding step

Bugfixes:
 * debian: Make package index threadsafe again
 * Don't add data to contents store in parallel
 * Don't add the same architecture multiple times when generating reports
 * Enable static check for poor exception handling
 * Don't run through a synchronized section when fetching package filename
 * Update dscanner and invoke it from a more versatile Python script

Version 0.7.2
~~~~~~~~~~~~~~
Released: 2018-04-16

Features:
 * Dramatically reduce memory usage of cruft cleanup operation
 * Parallelize database cleanup a bit more
 * debian: Add basic in-memory deduplication of translated texts for packages

Bugfixes:
 * Fix build on 32bit architectures
 * Make GStreamer entry entirely optional for packages
 * Ensure we properly merge in desktop-entry data from launchable tags
 * Never process desktop files twice
 * Don't append desktop data to mime/category lists
 * Update wrap files to work with gir-to-d >= 0.15

Version 0.7.1
~~~~~~~~~~~~~~
Released: 2018-04-06

Features:
 * debian: Use TagFile class from Laniakea
 * debian: Use the packages real architecture in its identifier
 * debian: Implement packageForFile backend feature
 * Do more complex parsing of metainfo license expressions
 * ci: Enable more static analysis checks
 * Improve manual page

Bugfixes:
 * Never upscale icons if we don't need to, use pixmaps directory as last resort
 * Update wrap files to work with gir-to-d >= 0.14
 * Don't try to upscale tiny icons from the pixmaps directory
 * Register HiDPI icons for fonts properly
 * Fix some minor style issues found by D-Scanner
 * Document WorkspaceDir config file option

Version 0.7.0
~~~~~~~~~~~~~~
Released: 2018-04-04

Notes:
 * Processing single packages and calling publication and processing
   separately is not a fully supported feature yet!
   This release lays the groundwork for it, but its final implementation
   will happen later. Do not use this in production!

Features:
 * stdx.allocator-backed containers library
 * Use stdx.allocator-backed HashMap in more places
 * Trigger GC less aggressively, use smaller parallel work unit sizes
 * Allow setting a workspace in config and calling asgen on a config file
 * Add backend interface for processing a single package
 * Allow calling only the metadata publication step
 * Add framework for extracting data directly from package files
 * Allow setting icon policy in configuration
 * Add support for more icon types and customizable icon policy
 * Allow icon upscaling in certain cases, but complain about it
 * Modernize Meson definitions
 * Document how to modify icon policies in configuration
 * Use AppStream 0.12.0 and format 0.12 by default

Bugfixes:
 * Update wrap files to be compatible with gir-to-d >= 0.13
 * Improve ArchiveDecompressor usage
 * For each array appender, try to guess capacity to reserve better
 * Properly add remote icon URLs
 * Fetch JavaScript bits with Yarn instead of Bower
 * Ensure we can run asgen again from its build directory
 * Ignore data from immutable suites on cleanup
 * Don't parallelize cleanup data collection routine
 * Release memory chunks faster during cleanup operations

Version 0.6.8
~~~~~~~~~~~~~~
Released: 2017-11-06

Notes:
 * The -Ddownload_js build flag is now -Ddownload-js to follow the naming
   of other Meson flags more closely.

Features:
 * Encode AppStream library version in version info string on reports
 * Don't require an install candidate for a webapp
 * Update hicolor theme fallback definition
 * Try to filter out symbolic icons for apps
 * Allow processing only one section in a suite
 * Relax icon scaling rules

Bugfixes:
 * Move time graph legend to the top left
 * ci: Use the packaged gir-to-d
 * Drop an unused gdc conditional
 * Ensure the validator never tests web URLs for validity
 * Drop LLVM DC bug workaround and allow cross-module inlining
 * Make D GIR interface build work again with recent Meson versions
 * Don't fail if we have a dupe ID with no pkgname, can happen now with webapps

Version 0.6.7
~~~~~~~~~~~~~~
Released: 2017-10-02

Features:
 * ci: Enable gdc again for testing (Matthias Klumpp)
 * Make rpmmd backend work (Matthias Klumpp)
 * Make an empty main function for embedded unittests (Matthias Klumpp)
 * Add a metainfo file (Matthias Klumpp)
 * Add a manual page (Matthias Klumpp)
 * Sort suite names on the index page (Matthias Klumpp)

Bugfixes:
 * use file.exists to check file existence (Antonio Rojas)
 * arch: Don't ref generator results (Matthias Klumpp)
 * Improve the icon tarball generation code (Matthias Klumpp)
 * Resolve deprecation warning (Matthias Klumpp)

Version 0.6.6
~~~~~~~~~~~~~~
Released: 2017-09-22

Features:
 * Add basic HiDPI support (Corentin Noël)
 * Generate the HiDPI tarball (Corentin Noël)
 * Add an 'info' command to dump package information (Matthias Klumpp)
 * Handle the "Hidden" property in .desktop files and complain about it (Matthias Klumpp)

Bugfixes:
 * arch: XML-escape package descriptions (Matthias Klumpp)
 * Check for availability of a component-id at the right time (Matthias Klumpp)
 * Make writing compressed results a bit more robust (Matthias Klumpp)
 * Resolve all deprecation warnings and slightly improve code (Matthias Klumpp)

Version 0.6.5
~~~~~~~~~~~~~~
Released: 2017-07-02

Features:
 * Generate type=codec metadata for gstreamer packages (Iain Lane)
 * Add a feature flag for GStreamer processing (Iain Lane)
 * ci: Switch to using upstream GirToD (Matthias Klumpp)
 * Set asgen version in defines.d by Meson as well (Matthias Klumpp)
 * Format graphs a bit nicer (Matthias Klumpp)

Bugfixes:
 * Find files in DATADIR - not relative to the executable (Iain Lane)
 * Fix typo in metadata-path hint (Matthias Klumpp)
 * Try to be more informative when a component has no ID (Matthias Klumpp)
 * Ensure the rDNS scheme is really followed before editing an ID (Matthias Klumpp)

Version 0.6.4
~~~~~~~~~~~~~~
Released: 2017-05-25

Features:
 * Automatically generate GIR D bindings at build-time (Matthias Klumpp)
 * Remove dub build file (Matthias Klumpp)
 * Use Meson subproject/wrap to fetch mustache-d in case it is missing (Matthias Klumpp)
 * Add a launchable tag to output if we can add one (Matthias Klumpp)
 * Make legacy metainfo dir a warning (Matthias Klumpp)
 * Validate launchable entries and add heuristics in case they aren't present (Matthias Klumpp)

Bugfixes:
 * Import buildPath directly from std.path (Antonio Rojas)
 * Remove spurious std.stream import (Matthias Klumpp)

Version 0.6.3
~~~~~~~~~~~~~~
Released: 2017-03-08

Features:
 * Experiment with scoped classes (Matthias Klumpp)
 * Drop embedded generator copy (Matthias Klumpp)
 * Use final classes whenever possible (Matthias Klumpp)
 * Centralize all export-dir locations in base config class (Matthias Klumpp)
 * Allow to manually configure data export locations (Matthias Klumpp)

Bugfixes:
 * Fix some quirks and make the tests work again (Matthias Klumpp)
 * ci: Don't build with GDC (Matthias Klumpp)
 * Don't fail if a suite has no base suite (Matthias Klumpp)
 * engine: Process base suite packages for contents only (Iain Lane)
 * Update README.md (#39) (Blake Kostner)
 * debian: Only select the most recent packages for a scan (Matthias Klumpp)
 * Streamline final component validity check, resolve a crash (Matthias Klumpp)

Version 0.6.2
~~~~~~~~~~~~~~
Released: 2017-01-24

Notes:
 * GDC 6.x can't compile the project at time due to a GDC bug.
   See https://bugzilla.gdcproject.org/show_bug.cgi?id=251 for more
   information.

Features:
 * Support desktop-app metainfo files without .desktop file if they have an icon set
 * Write log entry when starting/finishing icon tarball write
 * Update AppStream bindings
 * Allow to specify allowed <custom/> keys
 * Don't show pedantic validator hints
 * Allow metainfo file to specify sample texts for fonts
 * Process XPM icons if they are large enough

Bugfixes:
 * Safeguard against TLD checks  with empty-or-null string
 * Ensure desktop-apps have at least one valid category set
 * Don't override metainfo name/summary with .desktop values
 * Quit immediately if the component type is unknown
 * Correctly read a font's full-name
 * Don't needlessly reprocess fonts

Version 0.6.1
~~~~~~~~~~~~~~
Released: 2016-12-26

Features:
 * Add a symlink so that Ubuntu uses the same template as Debian (Iain Lane)
 * Support linking to "old suites" in the HTML index (Iain Lane)
 * hints: icon-not-found: Explain the symlink problem for Debian & Ubuntu (Iain Lane)
 * Add preliminary new asgen logo (Matthias Klumpp)
 * Use struct for archive (Matthias Klumpp)
 * Reuse AsMetadata while processing metainfo files (Matthias Klumpp)

Bugfixes:
 * Correctly install templates with Meson (Matthias Klumpp)
 * meson: Make finding mustache-d more robust (Matthias Klumpp)
 * Fix build with DMD (Antonio Rojas)
 * engine: Don't clean packages in base suites (Iain Lane)
 * download: If we have a last-modified date, set the mtime of the target file (Iain Lane)
 * Simplify zarchive code a little (Matthias Klumpp)
 * Use module initializer to initialize global static data (Matthias Klumpp)
 * Fix build on Debian with GDC (Matthias Klumpp)

Version 0.6.0
~~~~~~~~~~~~~~
Released: 2016-10-03

Notes:
 * If possible, you should build Meson with the LLVM D compiler and the
   Meson build system now.

Features:
 * Produce better error messages on failed libarchive actions (Matthias Klumpp)
 * Add a hook to the desktop file parser to run backend specific code (Iain Lane)
 * Add an Ubuntu backend to retrieve langpack translations (Iain Lane)
 * Open databases with NOTLS (Matthias Klumpp)
 * Tweak the issue messages a bit (Matthias Klumpp)
 * Complain about stuff in legacy paths (Matthias Klumpp)
 * Only search for .desktop files if we have a DESKTOP_APP component (Matthias Klumpp)
 * Create new Font class to read font metadata (Matthias Klumpp)
 * Render an icon for fonts (Matthias Klumpp)
 * Add dependencies on Pango, FreeType and Fontconfig (Matthias Klumpp)
 * Determine languages a font supports (Matthias Klumpp)
 * Reorganize code for proper namespacing (Matthias Klumpp)
 * Render font screenshots (Matthias Klumpp)
 * Map font full names to files in a spec-compliant way (Matthias Klumpp)
 * Enable fonts support by default (Matthias Klumpp)
 * Share ContentsStore between threads again (Matthias Klumpp)
 * Make Meson a first-class buildsystem for asgen (Matthias Klumpp)
 * Update README (Matthias Klumpp)

Bugfixes:
 * Fix build on non-64-bit architectures (Matthias Klumpp)
 * Work around LDC bug (Matthias Klumpp)
 * fclose() the memstream when we are done with it (Iain Lane)
 * debpkgindex: Be less noisy about translations in debug mode (Iain Lane)
 * Use getTestSamplesDir (Iain Lane)
 * Retry on all curl errors, not just timeouts (Iain Lane)
 * Synchronise downloading of files (Iain Lane)
 * ubuntu: Don't reference all packages, just the ones we need (langpacks) (Iain Lane)
 * Use an ugly mutex to work around Fontconfig issues (Matthias Klumpp)
 * Make FC mutex a bit more fine-grained (Matthias Klumpp)

Version 0.5.0
~~~~~~~~~~~~~~
Released: 2016-08-30

Features:
 * Add more speed and style optimizations, make Package an abstract class (Matthias Klumpp)
 * Use a string appender instead of a string array for writing output (Matthias Klumpp)
 * debian: Support downloading files from a mirror, instead of having them local (Iain Lane)
 * debian: Support DDTP translations (Iain Lane)
 * Ignore some more useless categories (Matthias Klumpp)
 * Add skeleton for RPMMD (Matthias Klumpp)
 * Add a few optimizations using immutable and appender (Matthias Klumpp)
 * Do not spawn compressors anymore, use libarchive directly (Matthias Klumpp)
 * Make compiling with LDC easier (Matthias Klumpp)
 * Add example for cruft collection script (Matthias Klumpp)
 * Allow cleaning up statistical data retroactively (Matthias Klumpp)
 * Rehash hash tables that we query often (Matthias Klumpp)
 * Always optimize debug builds (Matthias Klumpp)
 * Make a splitbuild with Meson and Ninja possible (Matthias Klumpp)
 * Use AppStream's knowledge about TLDs to build smarter global-component-ids (Matthias Klumpp)
 * Allow specifying the format version metadata should be built for (Matthias Klumpp)
 * Adjust for AppStream 0.10 release (Matthias Klumpp)
 * Perform legal checks before allowing metadata to be added to the pool (Matthias Klumpp)

Bugfixes:
 * Fix dataUseJSTime in section overview template (Blake Kostner)
 * debian: Only retrieve DDTP translations from the section we're looking at (Iain Lane)
 * Fix deprecation warnings from LDC (Matthias Klumpp)
 * Work around some weird JSON parser quirk (int incompatible with uint) (Matthias Klumpp)
 * Prevent creating excess statistic entries (Matthias Klumpp)
 * Fix potential crash (Matthias Klumpp)
 * Use native generator when not compiling with GDC (Matthias Klumpp)
 * Work correctly if CIDs omit the .desktop suffix (Matthias Klumpp)
 * Only add valid category names to output (Matthias Klumpp)
 * Don't emit description-from-package multiple times per package. (Matthias Klumpp)

Version 0.4.0
~~~~~~~~~~~~~~
Released: 2016-07-12

Features:
 * README: Add link to D tour
 * Run optipng with standard settings
 * Add command to forget extracted data for a package
 * Implement immutable suites
 * Use appender more often and apply some style fixes
 * Build with parallel by default when using Makefile
 * Drop some deprecated stuff

Bugfixes:
 * Display an error when processing a suite without section or arch
 * debian: Fix exception message if directory does not exist
 * Code improvements: More pure, more safe, more trusted
 * Drop global data validation result box
 * Don't crash if media pool directory does not exist and immutable suites are used

Version 0.3.0
~~~~~~~~~~~~~~
Released: 2016-05-24

Features:
 * Register new backend for Arch Linux (Matthias Klumpp)
 * arch: Add reader for lists index file and skeleton for PackageIndex (Matthias Klumpp)
 * Make generic archive class work well with non-Debian packages (Matthias Klumpp)
 * Add HTML anchors for maintainers on report pages (Matthias Klumpp)
 * html: Show suite name in section overview (Matthias Klumpp)
 * Allow not setting a MediaBaseUrl (Matthias Klumpp)
 * Add some font rendering experiments (Matthias Klumpp)
 * Allow storing multiple statitics entries per point in time (Matthias Klumpp)
 * Make icon tarball build reproducible (Matthias Klumpp)
 * Make ArchiveDecompressor API more powerful and always return const(ubyte)[] (Matthias Klumpp)
 * arch: Speed up backend by loading all data in one go (Matthias Klumpp)
 * Split "handleScreenshots" into more useful, fine-grained flags (Matthias Klumpp)
 * Add timestamp to output and only touch it if something has changed (Matthias Klumpp)
 * Only update metadata if the indices have been changed (Matthias Klumpp)
 * Store media in pool subdirectory (Matthias Klumpp)
 * Add flag to enforce metadata processing, even if nothing changed (Matthias Klumpp)
 * Allow disabling metadata timestamps (Matthias Klumpp)
 * Improve scan-skipping code (Matthias Klumpp)

Bugfixes:
 * Fix build on non-64bit arches (Matthias Klumpp)
 * Handle compressed empty files correctly (Neil Mayhew)
 * Drop other, non-UTF-8 encodings from language codes too (Matthias Klumpp)
 * Drop non-printable characters from .desktop file values (Matthias Klumpp)
 * Loop over more things by-reference to reduce RAM usage (Matthias Klumpp)
 * debian: Read Packages.xz files if no .gz file is available (Matthias Klumpp)
 * Don't lie about thumbnail sizes in their filename (Matthias Klumpp)
 * Don't duplicate architecture tag if there are multiple issues (Matthias Klumpp)
 * Catch data serialization errors (Matthias Klumpp)
 * Run bower with allow root to be able to make js as root (Harald Sitter)

Version 0.2.0
~~~~~~~~~~~~~~
Released: 2016-04-24

Features:
 * Don't ship minified JS
 * Get rid of (almost) all the embedded JS copies, use Bower
 * Add makefile for convenience
 * Use Flot for drawing graphs
 * Update README
 * Document all asgen-config settings
 * Reserve subdb in contents database to cache icon data
 * Make IconHandler use a pre-filtered list of icons
 * Allow templates to override only parts of the default branding
 * Add some default branding for Debian
 * Show logo on generated HTML pages
 * debian: Link some interesting resources from the main page

Bugfixes:
 * Find aliased icons correctly
 * Keep priority sorting of themes
 * Make the hicolor theme always-available, using an embedded index copy if necessary
 * Fix counting of issues
 * Do not accidentally upscale screenshots while creating thumbnails
 * debian: Don't make a missing package index fatal
 * Don't fail if we are trying to add statistics too quickly
 * Rename remove-valid to reflect what it actually does
 * Ignore errors if we are trying to decompress a 0-byte gzip file
 * Suite arguments aren't optional for process/remove-found
 * Demote screenshot-no-thumbnails to info

Version 0.1.0
~~~~~~~~~~~~~~
Released: 2016-04-18

Notes:
  * Initial release
