2.13.3

  * Redirect all debug messages to /dev/stderr
  * Gentoo: Stop emerge on errors
  * Arch Linux: Drop generation of .MTREE metadata file

2.13.2

  * Fix getting icon path for pre-2.8 game scripts with globs expanding to spaces
  * Improve the search for a proper working directory
  * Improve function descriptions in the icons source file
  * Gentoo: Use fakeroot (≥1.25.1) instead of fakeroot-ng

2.13.1

  * Fix data migration from volatile prefix to persistent paths
  * Fix filenames case conversion failure on non-ascii characters
  * Fix wrapper installation path
  * Gentoo: Ensure sdl2-image is built with png and jpeg support

2.13.0

  * New features:
    * New option --version (or -v), displaying the library version
    * Debug notices, disabled by default, enabled with --debug
    * Archives: Add support for InstallShield installers
    * Engines: Add ability to use system-provided Ren'Py
    * Packages: Add support for extra compression methods: lz4, lzip, lzop and zstd
    * Packages: Add an alternative output format targeting Gentoo

  * The installation process GNU Make has been improved to allow targeted actions:
    install-library, install-games, install-wrapper and install-manpage

  * Archive-related fixes and improvements:
    * Use a new archives naming convention, more robust, see our documentation for details:
      https://forge.dotslashplay.it/play.it/doc/-/wikis/dev/scripts/variables#base-archives
    * Rewrite functions related to archives initialization
    * .deb archives: Extract data without relying on dpkg-deb only
    * Fix the error shown when an archive type is not set and could not be guessed
    * Fix the error shown when an unknown archive type is used

  * WINE-specific improvements:
    * Do not override WINEDEBUG if it is already set by the user
    * Provide a standard method to divert arbitrary files from the WINE prefix
      to persistent user-writable paths

  * Packages-related changes:
    * Provide wrapper functions to get package-related informations, including
      packages metadata
    * New generic dependency keywords
    * Improve handling of supported compression methods based on the target
      package format
    * Debian: Update dependency on libgdk_pixbuf-2.0.so.0
    * Gentoo: Change default installation prefix to /usr from /usr/local

  * Environment checks:
    * Run early filesystem checks, allowing to detect failure that would
      happen only at the packages building step
    * New function version_is_at_least comparing two version strings using
      the "x.y.z" format

  * Deprecation notices:
    * icons_linking_postinst is now a compatibility wrapper around standard
      icons extraction functions

2.12.2

  * Archives-related improvements:
    * Improve compatibility check for InnoSetup archives

  * Icons-related fixes:
    * Avoid a potential infinite loop in the icons resolution guessing
      function
    * Fix compatibility with GraphicksMagic compatibility wrapper for
      ImageMagick

  * Package-related fixes and improvements:
    * Arch Linux: Add support for EndeavourOS as an Arch Linux derivative
    * Fix getting hostname on systems without /etc/hostname

  * Errors handling:
    * Fix error message displayed when passing an invalid value to a supported
      option
    * Improve handling of error cases related to empty variables
    * Fix error message shown when there was not enough disk space in tested
      temporary directory candidates

  * Codebase improvements:
    * Use grep --quiet instead of output redirection

2.12.1

  * Wrapper fixes:
    * Fix script detection from archive name

  * Archive-related fixes:
    * .zip archives: Drop selected files extraction using unzip

  * Package-related improvements:
    * Arch Linux: Use multithreaded xz compression by default
    * Arch Linux: Fix packages building failure when using --output-dir with a
      relative path
    * Arch Linux: Generate a .MTREE metadata file
    * Debian: Improve APT version detection

  * Dependencies-related improvements:
    * Show a more explicit message if icotool or wrestool is required but
      missing

  * Launchers-related fixes
    * Avoid broken .desktop Exec field when using spaces in the install prefix

  * Icons-related fixes:
    * Fix icons_move_to failure when targeting a non-empty directory

  * Codebase improvements:
    * Drop the dependency on hostname
    * Unset variables that we do not want to import from the user environment

2.12.0

  * New options:
    * --output-dir: Set the output directory for generated packages
    * --overwrite: Replace packages if they already exist
    * --icons: Allow including icons only if dependencies are present

  * Wrapper changes:
    * Drop $XDG_RUNTIME_DIR from the candidates for temporary directories
    * Prevent scan of unneeded directories
    * Drop script identification by MD5 hash

  * Archive-related changes:
    * Only extract needed files when using unzip
    * Allow to use renamed installers
    * Add support for LHA archives extraction

  * Engines-related changes:
    * New engine: ResidualVM
    * New engine: System-provided Mono runtime
    * DOSBox: Use PLAYIT_DOSBOX_BINARY in launchers if defined

  * Packages-related changes:
    * Add ability to set variables for package-specific postinst and prerm
      scripts
    * Arch Linux: Improve consistence of 32-bit packages naming

  * New helper functions:
    * version_target_is_older_than: Check if the game script target version is
      older than a given one
    * toupper: Convert files name to upper case

  * New generic dependency keywords:
    * libgdk_pixbuf-2.0.so.0
    * libglib-2.0.so.0 / libgobject-2.0.so.0
    * libmbedtls.so.12
    * libpng16.so.16
    * libopenal.so.1 (alias for "openal")
    * libSDL2-2.0.so.0 (alias for "sdl2")
    * libturbojpeg.so.0
    * libuv.so.1
    * libvorbisfile.so.3 (alias for "vorbis")
    * libz.so.1

  * Codebase clean-up and improvements:
    * Massive rework of all message-related functions
    * Drop hardcoded paths for icons and .desktop launchers
    * Use system-specific default installation prefix for generated packages
    * Forcefully set errexit setting on library initialization
    * Use dirname/basename instead of built-in shell patterns

2.11.4

  * Throw an explicit error when trying to write a launcher for a missing
    binary

  * Use safer `find | while read` constructs in prefix functions

  * Drop unrequired spawning of subshell by organize_data

  * Drop unrequired spawning of subshell by move_icons_to

  * Ensure $PLAYIT_WORKDIR is always an absolute path

  * Arch Linux: Fix bugs in dependencies handling

  * Debian: Fix APT version detection with APT ≥ 2.0.0

  * Debian: Enforce correct permissions for packages metadata

  * Gentoo: Update download link for quickunpkg

2.11.3

  * Fix cdrom type (file or directory) detection for DOSBox games

  * Use -eq instead of = for arithmetic comparisons

  * Update link to issues tracker

  * Improve handling of 7z archives extraction

  * Improve error messages shown when a required script dependency is missing

  * Spawn a terminal when calling winetricks, so its actions are no longer
    hidden from users not running their games from a terminal

  * Use convmv when available for converting file names to lower case, as it
    has better performances than our custom-made function

  * Fix argument usage for check_option_validity, and move it outside of
    play.it-2/src/99_init.sh

  * Arch Linux: Advertise ./play.it in the generated packages metadata

  * Arch Linux: Fix builddate entry in the generated packages metadata

  * Arch Linux: Improve support for libarchive implementation of tar
   ("bsdtar") when building packages

  * Debian: Improve handling of WINE dependency, thanks to Jens Reyer for the
    help on debian-wine mailing list

  * Gentoo: Fix default compression method for generated packages

  * Gentoo: Drop abi_x86_32 abi_x86_32 USE flag for app-emulation/winetricks
    dependency

2.11.2

  * Do not throw an error when a script has been called with --dry-run and an
    icon file is not found

  * Move all compatibility aliases to a dedicated source file

  * glx meta-dependency do not install a transitional package anymore on
    recent Debian versions

  * Allow to skip control of InnoSetup version used in archive passed to
    innoextract

  * New test: Run a single game script in dry mode once for each supported
    archive

  * Check for file existence when an archive is given as argument to a
    game-specific script

  * Display an error when an unknown application type is used

  * When extracting multiple icons at once, ensure that they won’t override
    the ones extracted before them

  * Fix get_archive_specific_value / get_package_specific_value on corner
    cases, by dropping avoidable calls to eval

  * Use cabextract’s -L option to extract files as lowercase

  * Gentoo packages: bump EAPI version to 7

2.11.1

  * Fix apt version detection on old versions of apt

2.11.0

  * Add ability to generate packages for Gentoo, using --package=gentoo

  * Rewrite of launchers-related functions. Compatibility wrappers still
    exist for old functions

  * archive_guess_type: Automatically set ARCHIVE_TYPE for 7-zip archives

  * Nixstaller archives: Guess header length instead of using hardcoded value

  * Improve support for Java games

  * pkg_write_*: Reliably use archive-specific dependencies list when
    available

  * New option --skip-free-space-check: Bypass free space check, create
    temporary directories under $TMPDIR, defaults to /tmp

  * Fix issue with pre-2.8 compatibility code in icons_linking_postinst

  * move_icons_to: Fix crash when --prefix is set to a custom value

2.10.5

  * select_package_architecture: Fix bug when using --architecture=64 (or
    --architecture=auto on 64-bit systems) on an archive providing 32-bit
    binaries only

2.10.4

  * Improve ShellCheck tests coverage

  * Do not let empty dirs lingering after uninstallation using make

  * main script: Fix wrong usage of 'return' instead of 'exit'

  * main script: Update search paths for library and game scripts

  * help: Fix usage instructions when called from main script

  * packages_guess_format: Fix falling back on default package format value
    when host OS couldn’t be guessed

  * icons_get_from_path: Fail with an explicit error message if called with an
    empty icon path

  * print_instructions: Improve message readability

  * write_bin - init_prefix_dirs: Fix use of globbing when setting the paths to
    user directories

2.10.3

  * write_bin - init_prefix_files: Do not ignore symbolic links in
    $CONFIG_PATH / $DATA_PATH when generating or updating prefix

  * pkg_write_deb: Always set "Multi-Arch: foreign" in packages meta-data,
    fixes issues when trying to install DLC for 32-bit games on 64-bit systems

2.10.2

  * write_bin_run_native: Restore pre-2.10.1 version, as the 2.10.1 fix has
    unexpected side effects

2.10.1

  * Drop pre-built library from repository

  * make install: Use different default paths if not run as root

  * Arch Linux: Add missing package to generic dependency 'gcc32'

  * archive_extraction_innosetup: Hide innoextract warnings during extraction

  * write_bin_build_wine: Always sleep 1 second after using winetricks, as
    some tweaks won’t apply directly if the game is called to quickly

  * Set input field separator to default value (space, tab, newline)

  * write_bin_run_native: Remove unneeded duplicated code

2.10.0

  * get_tmp_dir: New function allowing to set a temporary working directory by
    setting $TMPDIR

  * New archive type 'iso', using bsdtar for data extraction

  * get_value: New helper function allowing to get the value of a variable
    using a dynamically generated name

  * New meta-dependencies 'libudev1' and 'theora' respectively providing
    libudev.so.1 and libtheora.so.0

  * New archive type 'innosetup1.7', allowing to ensure that InnoExtract >= 1.7
    is available

  * icon_file_not_found_error: New function displaying an error if some
    function should work on an icon file that could not be found

  * write_bin_run_dosbox: Improve handling of CD-ROM images for DOSBox games

  * Add support for bzip2 compression

  * Set all application-specific variables even for ScummVM games

2.9.2

  * set_temp_directories: Improve the generation of the temporary work
    directory, dropping "mktemp --dry-run" usage

2.9.1

  * extract_data_from: Do not print "OK" after innosetup variants extraction
    (progress already has a visual feedback)

  * Better handling of game updates and DLC (un)installation by automatically
    updating the user prefix on each game launch

  * meta-script: if called without argument, show usage instructions

  * icon_get_resolution_from_file: Fix a bug with pre 2.8 scripts where the
    resolution value of the first analyzed file would be kept for all files

2.9.0

  * Update license file to keep track of all authors

  * New generic dependency: libcurl

  * Remove shebang from library, as it is always meant to be sourced, never
    directly executed

  * Makefile: Add ability to choose the installation path, now defaulting to
    /usr/local/share/games/play.it for library and scripts, and
    /usr/local/games for meta-script

  * Makefile: Do not install play.it 1.x scripts and library anymore

  * meta-script: Add manpage

2.8.3

  * Fix typo in help(), that led to suboptimal wording when called on a script
    with a single supported archive (previous 2.8.2 fix was incomplete)

  * Add automated shellcheck tests based on GitLab CI

  * Improve syntax based on shellcheck 0.5.0 report

2.8.2

  * icon_extract_ico_from_exe: Suppress wrestool error output

  * icon_get_resolution_from_file: Fix compatibility with scripts targeting
    library version 2.7 or older in a more robust way than what has been done
    in 2.8.1

  * Fix typo in help(), that led to suboptimal wording when called on a script
    with a single supported archive

2.8.1

  * Fix icon_get_resolution_from_file and icons_linking_postinst compatibility
    with scripts targeting library version 2.7 or older

  * WINE: Do not remove links to $HOME for scripts targeting library version
    2.7 or older

2.8.0

  * Greatly reduce time taken by play.it meta-script to identify the correct
    script for an archive, by using file name before falling back on MD5 hash
    sum

  * WINE: Remove most links pointing outside of the WINE prefix, to reduce
    $HOME clutter

  * Rework most icon-related code for easier understanding and maintenance

  * Use ImageMagick to extract .png files from .ico containers

  * Update dependencies automatic detection based on new icon extraction
    methods

2.7.5

  * Fix sort_icons behaviour when icon extraction produced a single file

  * meta-script: Fix broken support for ./play.it 1 scripts

2.7.4

  * Fix write_bin_winecfg breaking init_prefix_dirs in winecfg launcher

2.7.3

  * archive_extraction_innosetup: Fix InnoSetup version test

  * Fix archives_get_list not detecting archives named ARCHIVE_(…)_OLD

  * Fix error message displayed by write_metadata when called on an unknown
    package

2.7.2

  * Fix an inverted test in archive_get_infos that broke the MD5 integrity
    check again, the 2.6.2 fix having been accidentally reverted on 2.7.0
    release

2.7.1

  * Fix variable leak during multi-parts archive automatic handling

2.7.0

  * InnoSetup archives: Check ability of available innoextract version to
    extract the target archive before trying to proceed with extraction

  * Try to guess the value of ARCHIVES_LIST if it is not set by the script

  * Use 'APP_ICON' as a fallback value for APP_ICONS_LIST if it is not set

  * Add automatic detection of multi-parts archives

  * New function get_package_version allowing a reliable way to use different
    version values for multiple packages generated from a single archive

2.6.2

  * Fix an inverted test in archive_get_infos that broke the MD5 integrity
    check

2.6.1

  * Fix postinst_icons_linking not working on more than one single app

  * Rework most archive-related code for easier understanding and maintenance

2.6.0

  * Add ability to build only packages for a given architecture

  * Add automatic architecture handling to print_instructions

  * New function prepare_package_layout providing a wrapper for organize_data

  * Improve sort_icons so it can be used on single .png file produced by
    convert

  * Add --dry-run switch, running tests but not extracting data nor building
    packages

  * Use a dedicated function to guess package format to build from host OS

2.5.3

  * When no supported archive is provided, add download URL to archives list

  * Fix variable leaking function scope when calling print_instructions

  * Follow symblic links when copying native game binary in user prefix

2.5.2

  * Fix init_prefix_files crashing when some files exist in PATH_DATA or
    PATH_CONFIG with no equivalent in PATH_PREFIX

2.5.1

  * Add a patch allowing to chose wether or not the desktop files should
    include the full path to the launcher script (default includes it and does
    not use $PATH, so custom values for installation prefix can be used
    without further tweaking)

  * Improve patches syntax following ShellCheck feedback

  * Display an error when using an invalid value for PKG

  * Fix error displayed if calling extract_icon_from on an unsupported file
    type

  * Improve user prefix generation

  * Improve library syntax following ShellCheck feedback

2.5.0

  * Add support for games requiring wine-staging patches

  * Add support for 64-bit WINE games

  * Add support for Windows MSI installers

  * Add support for Microsoft cabinet archives

  * New archive type 'nullsoft-installer'

  * New archive type value 'innosetup_nolowercase' allowing to skip files
    names conversion to lower case

  * New archive type 'zip_unclean'

  * New function use_package_specific_value allowing to get package-specific
    value for a given variable name (if such value exists)

  * New function use_archive_specific_value allowing to get archive-specific
    value for a given variable name (if such value exists)

  * Add 'xrandr' and 'xgamma' to the generic dependencies

  * Add automatic dependencies detection for archive types 'mojosetup_unzip'
    and 'tar'

2.4.2

  * Fix handling by init_prefix_files of files created after the first game
    launch

2.4.1

  * Fix messed up icon path when using get_icon_from_temp_dir

2.4.0

  * Add option to load regedit files on WINE prefix initialization

  * New function get_icon_from_temp_dir, to get an icon in .png format
    directly from the source archive

2.3.2

  * Fix launchers broken in 2.3.1

2.3.1

  * Use full path to game binary in launchers, to avoid issues when using
    non-default install path

  * Do not store temporary files outside of prefix

  * Drop post-run user directories clean-up, redundant with another function

2.3.0

  * Improve handling of MojoSetup extraction with unzip ending with an error
    code

  * Improve handling of user directories

  * Add new packages to the list of generic dependencies

  * Add a patch allowing to change the default package compression method

  * Remove the need to manually clean-up package scripts

  * Preserve symbolic links when copying files

2.2.0

  * Automatically detect archive type for *.rar files

  * Allow to use multiple fallback values for $ARCHIVE_PATH and $ARCHIVE_FILES

  * Make /tmp/play.it world-writable to allow using ./play.it more easily on
    shared systems

  * Allow to set package-specific values for $APP_OPTIONS, $APP_PRERUN and
    $APP_POSTRUN

  * Add $APP_POSTRUN support to WINE launchers

  * Skip building already existing packages

  * New distro-agnostic method to declare dependencies

2.1.1

  * Fails gracefully if organize_data() is called before setting $PKG

  * Fix a bug where postinst_icons_linking() would erase the prerm/postinst
    prior content instead of appending to it

  * Fix a bug with wrestool, where calling it once with the --name option
    would have this option been carried out to all subsequent invocations

2.1.0

  * First fully installable version of ./play.it

  * New script 'play.it' automatically loading the adequate game-specific
    script for the archive given in argument

  * Display an error when calling a script with unsupported arguments

  * New function easing the management of icons provided by post-installation
    links

  * New application type allowing to run native games without using a
    ./play.it prefix

  * The library can now be loaded without implying that it has been called by
    a ./play.it script, making it easier to use by third-party projects

2.0.3

  * Fix error displayed when building .deb packages on systems without apt

  * Better handling of spaces in directories names when displaying
    installation instructions

  * Work around WINE bug 41639

2.0.2

  * Fix a bug with the copy of the game binary in the user prefix for some
    native games

  * Work around WINE bug 29661 for WINE versions prior to 1.9.20

2.0.1

  * Test the validity of options values early in the script execution to throw
    an error before any potentially long task

  * Print 'OK' on potentially long tasks completion without a visual
    progression indicator

  * If host OS auto-detection failed, display a warning before falling back on
    deb format

  * On all distributions providing apt >= 1.1, installation instructions show
    apt usage instead of dpkg + apt-get
