[B]Speculative/futuristic features[/B]

WIP      [CORE] Complete Extranafart support for Categories/Launchers/ROMs.
         Does this make sense?

WIP      [CORE] Think about exporting the AEL platform database using JSON-LD in accordance to
         Garbear's idea.
         See https://forum.kodi.tv/showthread.php?tid=295463&pid=2625754#pid2625754

WIP      [SCRAPERS] Advanced fuzzy search engine based on the Levenshtein Distance algorithm,
         for both online and offline scrapers. There is a Python implementation of
         the algorithm here: https://github.com/seatgeek/fuzzywuzzy

WIP      [SCRAPERS] LaunchBox Games Database scraper.
         NOTE Do not implement this. AEL offline scraper is more than enough.
         Apparently LaunchBox GamesDB started as a copy of TheGamesDB. Currently there is no
         API to access LaunchBox GamesDB but an XML with all the database info can be downloaded.
         See http://gamesdb.launchbox-app.com/
         See https://bitbucket.org/jasondavidcarr/launchbox/issues/902/api-access-to-launchbox

WIP      [SCRAPERS] Fix GameFAQs scraper.
         It has been a while since this scraper is not working any more.
         GameFAQs does not have an API. Should this scraper being removed???
         Currently the GameFAQs metadata scraper works well. The GameFAQs asset scraper
         does not work due to changes in GameFAQs. See the comments of method
         GameFAQs._load_assets_from_page()


[B]Current planned features[/B]

WIP      [CORE] Check out the ListItem constructor offscreen parameter in Leia. It can
         dramatically speed up ListItem creation and population.
         See https://forum.kodi.tv/showthread.php?tid=329315&pid=2711937#pid2711937

WIP      [CORE] Disable LNK $rom$ launcher with global setting.
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=2640857#pid2640857

WIP      [CORE] categoryID is redundant in SHOW_ROMS URL. Remove it or make it optional.
         See https://forum.kodi.tv/showthread.php?tid=276002&pid=2643218#pid2643218

WIP      [CORE] Should plugin URL be rationalised and simplified to make skinner's life easier?
         See https://forum.kodi.tv/showthread.php?tid=276002&pid=2643218#pid2643218

WIP      [CORE] Support for Advanced MAME Launcher exported virtual launchers or
         Read Only Launchers. This feature requires AML 0.9.X
         AML creates the Category "Arcade (AML)" and places the exported launchers there.

WIP      [CORE] Use Libretro_BIOS_cores.json for the Retroarch BIOS audit and not the internal
         database. However, Libretro_BIOS_cores.json does not have the ROM size.

WIP      [MANUALS] Port the PDF manual reader from AML into AEL.

WIP      [MULTIDISC] Edit multidisc ROMs. In general, improve the support for
         multidisc ROMs.

WIP      [MULTIDISC] Fix artwork support for multi-disc ROMs.
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=2628912#pid2628912

WIP      [MISC] Changes and suggestions propoed by Atsumori.
         See http://forum.kodi.tv/showthread.php?tid=287826&pid=2560843#pid2560843
         See http://forum.kodi.tv/showthread.php?tid=287826&pid=2586596#pid2586596

WIP      [SCRAPERS] Persistent scraper cache browser. Ability to browse the stored scraper
         searches. Also, context menu to delete stored cached data.

WIP      [SCRAPERS] Asset scrapers are disabled/not working for standalone launchers. Fix this.
         See https://github.com/Wintermute0110/plugin.program.advanced.emulator.launcher/issues/62

WIP      [SCRAPERS] MAME offline scraper: include ESRB field. Take it from GameInfoDB.

WIP      [SCRAPERS] MAME offline scraper: include plot field. Take it from GameInfoDB.


[B]Advanced Emulator Launcher | version 0.11.0 | xx xxxxxx 2021[/B]

NOTE     Implement these features in master branch for Python 3.

WIP      [CORE] Rename the plugin from `plugin.program.advanced.emulator.launcher` to
         `plugin.program.AEL`. Create a development version `plugin.program.AEL.dev` that
         can coexist with the stable version. Copy this feature from AML.

WIP      [CORE] Massive AEL refactoring. Thanks a lot to Chrisism for the patch!

WIP      [CORE] Support Kodi VFS and ROMs in remote filesystems for Retroplayer.
         See Chrisism patch in Github. Copy remote ROMs for external launchers?

WIP      [CORE] Proper support for Retroplayer launchers. Add functionality like
         Retroplayer core selection for each platform.

WIP      [CORE] Automatic generation of 3D Boxes using BoxFront and BoxSpine.
         Copy this feature from AML.

WIP      [CORE] Automatic generation of BoxTextures from BoxBack, BoxSpine and BoxFront.
         Copy this feature from AML.

WIP      [CORE] Unified ROM artwork directory. This will require heavy changes in categories.xml.
         I still have to think how to properly implement this. This is related to the
         desing of a prototype Kodi games database.
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=2865413#pid2865413
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=2867785#pid2867785

WIP      [CORE] New fields in database to be prepared for the future. See NOTES.md

WIP      [CORE] Support for BoxSpine artwork. Support for BoxTextures artwork.
         Have a look at LaunchBox for other types of artwork that may be interesting.

WIP      [CORE] New Utility "Delete ROMs redundant artwork"
         Redundant artwork is orphaned artwork. This is not easy to code specially
         for launcher with recursive scan where ROMs can be in different
         directories.

WIP      [CORE] Make m_genre metadata field a list for Categories, Launchers and ROMs.
         Support several genres as a comman separated string, for example
         "Action, Adventure, Puzzle". See Sagrath comment here
         https://github.com/Wintermute0110/plugin.program.AEL/issues/128

WIP      [FAVOURITES] Change the way artwork is stored in Favourites, Launchers and
         Categories directories. Avoid using IDs in the artwork name unless absolutely
         necessary. Use same scheme as ROM collections.

WIP      [ROM AUDIT] Separate the ROM Audit code from the Parent/Clone code.

WIP      [ROM AUDIT] Add an option to create a default Parent ROM for Redump DATs or NoIntro DATs
         with no PClone information. See NOTES.md for implementation ideas.

WIP      [ROM AUDIT] Options to generate the 1G1R parent list, like prefer ROMs from Europe,
         Japan or USA. This resembles what NARS No-Intro filtering does.

WIP      [SCRAPERS] In ScreenScraper, check for daily allowance and scraper overflows in general.
         This will require changes in the scrapers API. Currently, the scrapers return
         the asset URL and the addon download the asset, not the scraper. In the future
         the asset download must be done by the scraper and hence the overloading controlled.

WIP      [SCRAPERS] Improve the Offline Scraper. Improve the quality of the databases.

WIP      [SCRAPERS] Change the Offline Scraper format from XML to JSON. Include the new fields
         `parent` **string**, `region` **list of strings** and `language` **list of strings**.
         In general, write down the specifications of the new Offline Scraper database and
         have a look at NOTES.md for guidelines. Create the XML databases to be merged with the
         No-Intro/Redump DATs, also giving support to Extra ROMs (hacks, etc.).

WIP      [SCRAPERS] ScreenScraper must choose the correct artwork depending on the region/language.
         AEL must have an official list of regions/languages, extracted from the No-Intro/Redump
         DATs, to translate to ScreenScraper values. A No-Intro filename parser is also
         required.

WIP FIX  Fix launching of ROMs with Windows network filenames.
         Fixing this requires the creation of a custom version of the shlex module.
         To test this I created a test script in dev-core/test_argument_generation.py
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=2919639#pid2919639


[B]Advanced Emulator Launcher | version 0.10.1 | 04 August 2021[/B]

FIX      Fix crash when reading a launcher NFO file when importing a launcher XML file.
         Refactored the NFO file functions a bit.
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=3045045#pid3045045

FIX      Error when scraping metadata.
         See https://github.com/Wintermute0110/plugin.program.AEL/issues/146


[B]Advanced Emulator Launcher | version 0.9.11 | 04 August 2021[/B]

NOTE     This version is for Python 2 and feature identical to 0.10.1
         Main development is in the Python 3 branch.


[B]Advanced Emulator Launcher | version 0.10.0 | 22 June 2021[/B]

NOTE     Python 3 version for Matrix in branch release-0.10.x-python3

FEATURE  Create a Python 3 Matrix version 0.10.x to track release 0.9.x.
         Current master branch will be release 0.11.x in Python 3.
         First release 0.9.10 Python 2 and then do the Python 3 conversion into 0.10.0.

FEATURE  Port release 0.9.10 to Python 3.


[B]Advanced Emulator Launcher | version 0.9.10 | 22 June 2021[/B]

NOTE     Python 2 version for Leia/Krypton in branch release-0.9.x-python2
         Have a look at AML code to ease the conversion.

FEATURE  Create file misc.py and refactor utils.py. Copy structure from AML.
         Replace Kodi dialog functions with wrapper functions to facilitate the transition
         to Python 3. For example, eliminate all the .decode('utf-8') functions or
         at least as much as possible.

FEATURE  Complete remove legacy Advanced Launcher launcher.xml loading/parsing functions.

FEATURE  [CORE] Disable Kodi screensaver when launching and reenable after app finishes.
         Featured ported from AML.
         See https://forum.kodi.tv/showthread.php?tid=304186&pid=2934194#pid2934194

FEATURE  Add support to remove unneeded blank spaces in `dev-core/check_line_endings.py`.

FEATURE  In the ROMs CM add a menu to edit all assets as once, including scraping
         all assets at once.
         See https://github.com/Wintermute0110/plugin.program.AEL/issues/140

FIX      Check issue #142, TGDB scraper not working well.
         The issue was a bug with TGDB engine and has been fixed.

FIX      Fix TheGamesDB scraper. New asset titlescreen in TheGamesDB.
         See https://forums.thegamesdb.net/viewtopic.php?f=5&t=1947
         See https://github.com/Wintermute0110/plugin.program.AEL/issues/127

FIX      Fix launching of LNK ROM launchers with spaces in LNK filename.
         See https://github.com/Wintermute0110/plugin.program.AEL/issues/125

FIX      Fix Standalone Kodi builtin launchers.
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=3036064#pid3036064


[B]Advanced Emulator Launcher | version 0.9.9 | 13 March 2020[/B]

FEATURE  [COLLECTIONS] When exporting ROM Collections assets are always exported. The option
         to export only metadata has been removed. When importing assets are also always
         imported to the ROM Collection asset directory.

FEATURE  [COLLECTIONS] Current way of storing the collection artwork, in a unified JSON file,
         is not good. Think of a good way to exporting collections (for example, store the
         artwork in a subdirectory).

FEATURE  [COLLECTIONS] Do not consolidate Collection artwork before exporting. Also, when
         importing always import to the Collection artwork directory. Exported artwork
         collection filenames in the JSON file must be relative, not absolute paths.

FEATURE  [COLLECTIONS] Store Collection ROMs artwork as filename_platformCompactName_assetType.png
         and not filename_ROMID_assetType.png. This solves a lot of problems of duplicate
         artwork. ROMs with same name are allowed on different platforms but not on the
         same platform, which makes sense. Collection own artwork use the special
         platform name 'collection'.

FEATURE  [CORE] Rename offline scraper XML databases to use new platform name.

FEATURE  [CORE] Changed the Offline Scraper XML fields. Now the XML files are not compatible
         with HyperSpin but they make more sense.

FEATURE  [CORE] Update the platform icons. Github issue #112.

FEATURE  [SCRAPERS] MAME offline scraper: include NPlayers field. Take it from nplayers.ini

FEATURE  [SCRAPERS] Store when there is a bad JSON from the scrapers for further
         analysis. Working for ScreenScraper scraper.

FEATURE  [SCRAPERS] Update MAME Offline Scraper database to version latest version 0.219.

FEATURE  [SCRAPERS] Include isBIOS, isDevice, isMechanical in AOL MAME database. This is
         required to filter BIOSes and Devices in MAME launchers.

FEATURE  [SCRAPERS] Filter MAME BIOSes, Devices and Mechanical machines with the new
         Offline Scraper JSON databases. Use the offline scraper DB to determine what
         is a BIOS/Device/Mechanical in MAME.
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=2697000#pid2697000

FEATURE  [SCRAPERS] Add a delay of 1200 ms between downloads to ScreenScraper scraper
         to avoid scraper overloading. This is configurable in the scraper object.
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=2923181#pid2923181

FEATURE  [CORE] New Utility "Check Launcher ROMs sync status"

FEATURE  [CORE] New Utility "Check ROMs artwork image integrity"
         Sometimes the scrapers download wrong/corrupt data, or produce 0 sized files
         if a file is open() and there is an exception. Sometimes a JPG image is renamed
         as PNG, etc. Check that all artwork have correct file extensions, etc.

FEATURE  [CORE] Extra ROMs directory. Extra ROMs are not audited. The extra ROMs directory
         is intended for ROM translations and hacks that should not be taken into account
         in the ROM audit.

FEATURE  [CORE] New Utility "Show detected No-Intro/Redump DATs"
         This utility shows the automatically detected No-Intro/Redump DATs.
         Create addon settings for the No-Intro DAT directory and the Redump DAT directory.

FEATURE  [CORE] New Utility "Check Retroarch Launchers" This utility checks all Retroarch
         launchers to verify if the core set with -L exists.

FEATURE  [CORE] Remove the LAUNCHER_DMODE_1G1R Launcher display mode. The Launcher display
         modes will be LAUNCHER_DMODE_FLAT and LAUNCHER_DMODE_PCLONE, like AML.

FEATURE  [ROM AUDIT] Current way of doing the ROM audit is inconvenient. User has to set a DAT
         file. Create two new settings: a) directory for No-Intro DATs, b) directory for Redump
         DATs. AEL must be able to choose the DAT file according to the platform.
         Some fields in categories.xml have been changed.

FEATURE  [ROM AUDIT] Create a tool to select the No-Intro/Redump DAT file automatically for
         each platform. This will be very useful for the new Offline Scraper database and
         for the ROM tag histogram.

FEATURE  [CORE] In the "Global ROM Audit statistics" report show only the audited launchers.

FEATURE  [CORE] Increase the number of platforms to include all No-Intro, Redump and
         Libretro platforms. This is in preparation of the Kodi Games Database.

FEATURE  [CORE] Settings to hide Utilities and Global Reports from root window.

FEATURE  [CORE] Setting for skin kiosk mode. See pull request in Github.

FIX      Fixed crash when setting display_launcher_roms was True.

FIX      When fixing ROM Collections the order of the ROM list is lost. Repaired items are
         placed at the end of the list and the original order is lost.
         This was a very long standing bug.

FIX      Fix crash when using "Export ROM metadata to NFO files"
         Crash was related to the deprecated kodi_busydialog_ON()

FIX      TheGamesDB URL API has changed. Verify that the scraper is working OK. Github issue #109.
         See https://forums.thegamesdb.net/viewtopic.php?f=5&p=2228

FIX      ScreenScraper crashes for aliased platforms. Github issue #113.


[B]Advanced Emulator Launcher | version 0.9.8 | 16 September 2019[/B]

FEATURE  [CORE] Added new artwork contributed by Sagrath.

FEATURE  [CORE] In XML configuration files, support multiple <args> tag and deprecate <args_extra>

FEATURE  [SCRAPERS] In ScreenScraper, if a ZIP file contains one and only one archive
         use it to calculate checksums and not the ZIP file itself.

FIX      Fixed a path related issue in _command_add_new_category() and
         _command_render_all_ROMs().


[B]Advanced Emulator Launcher | version 0.9.8-beta1 | 06 September 2019[/B]

FEATURE  [SCRAPERS] Copy scraper stuff from master branch by Chrisism.

FEATURE  [SCRAPERS] Fix MobyGames scraper and use new MobyGames API.
         See http://www.mobygames.com/info/api

FEATURE  [SCRAPERS] Fix TheGamesDB scraper.
         There has been a change in the web site including a new API.
         See https://github.com/Wintermute0110/plugin.program.advanced.emulator.launcher/issues/75

FEATURE  [SCRAPERS] Have a look at ScreenScraper and consider it for an online scraper.
         See https://www.screenscraper.fr/
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=2622839#pid2622839

FEATURE  [SCRAPERS] Fix ArcadeDB scraper. Use the new ArcadeDB API.
         It has been a while since this scraper is not working any more.

FEATURE  [SCRAPERS] Fix AEL Offline Scraper.

FEATURE  [SCRAPERS] Add support for ScummVM platform in the Offline Scraper.
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=2629084#pid2629084

FEATURE  [SCRAPERS] Warn user if missing scraper API keys, required stuff, etc., before scraping.
         Also, improve the scraper error reporting and the disabling of the scraper object
         if the web site is overloaded.
         Make sure TGDB scraper works like a charm. And then update the rest.

FEATURE  [SCRAPERS] Utility to check TheGamesDB monthly allowance.

FEATURE  [SCRAPERS] Utility to check MobyGames monthly allowance.

FEATURE  [SCRAPERS] Utility to check ScreenScraper monthly allowance.

FEATURE  [SCRAPERS] Make sure all scraper platforms are OK and synchronised with AEL platforms.

FEATURE  [SCRAPERS] Option to rescrape all ROM assets in a similar fashion to
         "Scan ROMs local artwork". Create a menu entry in "Edit Launcher", "Manage ROMs",
         "Scrape ROMs artwork".
         "Scrape ROMs artwork" will use the same scraper settings in options as the ROM Scanner.
         I think the best location for the code is in the ScraperStrategy class.
         See https://github.com/Wintermute0110/plugin.program.advanced.emulator.launcher/issues/72

FEATURE  [CORE] Create a couple of new ROM context menus, "Manage Recently played ROM" and 
         "Manage Most played ROM". Both will have the following options: "Delete this ROM",
         "Delete all Unlinked/Broken ROMs".
         See AML for an implementation.
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=2698811#pid2698811

FEATURE  [CORE] New ROMs artwork type 3D Boxes, asked by Rufoo.

FEATURE  [CORE] New entry in root menu named "Global Reports"

FEATURE  [CORE] New entry in root menu named "Utilities"

FEATURE  [CORE] Move stuff from addon settings into the Utilities menu, including the
         database upgrading functions.

FEATURE  [CORE] Make sure AEL never crashes when rendering the root window, even if 
         categories.xml is corruped. Users must be able to access the Utilities menu always to
         be able to upgrade the database. In case of crash when rendering the root window,
         ask the user to update the databases (in the case the crash is due to a missing 
         key in dictionary).

FEATURE  [CORE] New properties to notify skins about Std launchers, ROM launchers, Categories,
         and number of items in a Launcher. Upgrade documentation in SKINNING.md.

FEATURE  [CORE] Add Year and Developer for Categories.
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=2688653#pid2688653

FEATURE  [CORE] Per-launcher setting to disable multi-disc ROM support.

FEATURE  [CORE] Added "Edit Category" context menu, "Export Category XML configuration".

FEATURE  [CORE] New AEL Theme of Icons/Fanarts for the Virtual Launchers. Kudos to Sagrath for
         this contribution.

FIX      Fix crash in _gui_scrap_launcher_metadata() when scraping Launcher metadata with the CM.

FIX      Fix metadata and artwork scrapers when ROM name has Unicode characters.
         See Github issue #52

FIX      Fixed display_fav_status label in settings.xml
         See Github issue #56

FIX      Unicode fixes in kodi_update_image_cache()

FIX      Fixed MobyGames scraper.
         See Github issue #60


[B]Advanced Emulator Launcher | version 0.9.7 | 23 November 2017[/B]

FEATURE  Export individual Launcher XML configuration.

FIX      Fixed crash when editing Launchr Title in context menu.

FIX      Fixed crash in the ROM Scanner when Launcher had unconfigured ROM asset paths.


[B]Advanced Emulator Launcher | version 0.9.7-beta2 | 19 November 2017[/B]

FIX      Currently AEL multid-disc parser supports "Rom name (disc 1).bin".
         Fixed to also support "Rom name (disk 1).bin".
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=2656844#pid2656844
         and https://forum.kodi.tv/showthread.php?tid=287826&pid=2657243#pid2657243

FIX      Fix export of Launcher and ROM NFO files.
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=2658080#pid2658080

FIX      Fix import of Launcher and ROM NFO files.

FIX      Poster artworks do not appear anymore (got them mapped to flyers for all launchers).
         When I try to change the mapping (manage rom/choose roms default assets/artworks),
         then AEL is throwing me an error.
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=2660404#pid2660404

FIX      Fix crash in "Add ROMs", "Manually Add ROM".
         Error Type: <type 'exceptions.NameError'>
         Error Contents: global name 'assets_search_local_assets' is not defined
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=2665544#pid2665544


[B]Advanced Emulator Launcher | version 0.9.7-beta1 | 07 October 2017[/B]

FEATURE  Added a lot of new platforms.

FEATURE  Add an option to see ROM Maps image if it exists.
         Add an option in context menu "View ROM/Launcher".

FEATURE  Audit all launchers. Check if app exists, ROM path exits, artwork paths are configured,
         etc. When a user uses XML to import configurations it is easy to make a typo when
         writing directory names, etc. This command will report if AEL configuration is OK.

FEATURE  Use substituted artwork from the Parent/Clone group.
         So far implemented only in "Edit Launcher", "Manage ROMs", "Rescan ROMs local assets/artwork"

FEATURE  I discovered that in the ROM Scanner most of the time is spend looking for artwork. Before,
         I though it was the Offline scraper the culprit. Instead of using FileName().exists()
         create a set with all files in the directory and use that for the search.
         Implemented only in "Edit Launcher", "Manage ROMs", "Rescan ROMs local assets/artwork",
         must be ported to the ROM scanner if it works well (faster than the current approach).

FEATURE  ROM scanner should be able to scrap all assets, not just the ones supported by the
         selected scraper. This will require a redesign of the current scraping engine.
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=2628383#pid2628383 and next post.

FEATURE  Make sure all asset scraper requests are cached in the ROM scanner. For example, Title
         scraper choose a game in the list, then Snap scraper for the same ROM must use the
         cached selected game.

FEATURE  Port to the ROM scanner the asset file cache. This will increase the scanning speed a lot.

FEATURE  ROMs in UNC paths. It seems Retroarch added UNC path support recently.
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=2647152#pid2647152

         [Windows]
         Workaround in _run_process() to add an extra '\\' character if argument starts with
         a '\\'. This is to fix shlex.split() behaviour.
         
         Tested in Windows only with the following configuration:
             <ROM_path>\\SERVER_NAME\AEL-ROMs\sega-genesis\</ROM_path>
             <ROM_asset_path>smb://SERVER_NAME/AEL-assets/sega-genesis/</ROM_asset_path>

         This configuration also works in Windows:
             <ROM_path>smb://SERVER_NAME/AEL-ROMs/sega-genesis/</ROM_path>
             <ROM_asset_path>smb://SERVER_NAME/AEL-assets/sega-genesis/</ROM_asset_path>

         Artwork is stored in JSON DB as "smb://SERVER_NAME/AEL-assets/sega-genesis/boxbacks\\Sonic.jpg"
         ROMs are saved in JSON DB as "\\\\SERVER_NAME\\AEL-ROMs\\sega-genesis\\Sonic.md"

         Kodi artwork does not work with paths like \\SERVER_NAME\AEL-ROMs\sega-genesis\image.png.
         Correct path for artwork is smb://SERVER_NAME/AEL-ROMs/sega-genesis/image.png.

         Retroarch requires a ROM path like \\SERVER_NAME\AEL-ROMs\sega-genesis\Sonic.md.

FEATURE  Launcher flag to enable non-blocking launchers. This is required for wrapper scripts
         that close Kodi to avoid problems (such as Kodi getting gamepad commands instead of the
         launcher app or Kodi running in standalone mode withouth a Window manager).

FEATURE  Ability to import launcher and categories assets in the XML configuration files.
         Create a working example for Gamestarter addon. Also, refactor the AEL asset library.

FEATURE  Rename "Studio" database field to "Developer" in Launchers/ROMs.
         See https://forum.kodi.tv/showthread.php?tid=295463&pid=2625754#pid2625754

FEATURE  New Launcher asset 's_controller' for Console/Computer controller picture.

FEATURE  Renamed 's_thumb' -> 's_icon' in Categories/Launchers/Collections.

FEATURE  Renamed 's_flyer' -> 's_poster' in Categories/Launchers/Collections.

FEATURE  Renamed 'roms_default_thumb' -> 'roms_default_icon' in Launchers.

FEATURE  Improved Retroplayer support.
         See https://forum.kodi.tv/showthread.php?tid=295463&pid=2620489#pid2620489
         and https://alwinesch.github.io/group__python__xbmcgui__listitem.html#ga0f1e91e1d5aa61d8dd0eac90e8edbf18

FEATURE  Audit Retroarch BIOSes in System directory.

FEATURE  Scan for artwork in the Parent/Clone group of a ROM. Implemented only in the context
         menu "Edit Launcher", "Manage ROM List", "Rescan ROMs local assets/artwork".

FEATURE  Support for <Launcher_NFO> tag in XML configuration files.

FEATURE  Preserve path_title, path_snap, etc. when exporting a Launcher into an XML file.

FEATURE  Add an option to suspend/resume joystick support at launch. This is to prevent Kodi
         and the launched app to grab joystick events.
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=2627128#pid2627128
         
         Cannot be implemented because setting input.enablejoystick does not exist in Krypton
         any more.

FEATURE  Removed ElementTree dependency in addon.xml. It's not longer needed.
         AEL ONLY WORKS ON KRYPTON NOW!!!

FEATURE  Use the <news> tag in addon.xml. In general, have a look at http://kodi.wiki/view/addon.xml
         and modernise addon.xml.

FEATURE  Update code to use new xbmcgui.Dialog().select() useDetails parameter. Get rid of the 
         ImgSelectDialog() class. This need Krypton Beta 4 to run!
         See https://forum.kodi.tv/showthread.php?tid=250936&pid=2438074#pid2438074

FEATURE  Make use of Krypton features in the several dialogs of the addon: new param: "preselect" 
         for Dialog().multiselect() and Dialog().select(). 
         See https://forum.kodi.tv/showthread.php?tid=250936&pid=2327011#pid2327011

FEATURE  Option to group Unknown ROMs as clones or keep them as parents. I realised it is not
         conveninent that the Unknown ROMs are clones in the Parent/Clone view.

FEATURE  1 Game 1 ROM launcher display mode. Copy it from AML.
         Changed launcher['pclone_launcher'] to launcher['launcher_display_mode'] to store the
         display mode in categories.xml database.

FEATURE  Addon option to hide [Browse Offline Scraper].

FEATURE  Remove duplicates from recent ROMs list. Contributed by bonzini.
         See https://github.com/Wintermute0110/plugin.program.advanced.emulator.launcher/pull/41

FEATURE  Preliminary render support for LaunchBox scraper.

FIX      Fixed launching of BAT files in Windows.

FIX      In order for skin shortcuts and widgets to work OK, addon concurrency must be enabled
         by database read-only commands.

FIX      Fix scraper-related crash in the ROM scanner.
         See https://forum.kodi.tv/showthread.php?tid=287826&pid=2628382#pid2628382

FIX      When scraper downloads an image the parents JSON must be also updated. In general, every
         time a ROM is modified in the main database the Parents JSON must be updated to keep
         both DBs synchronised!

FIX      Fixed Unicode-related crashes introduced in 0.9.6 in the ROM scanner.
         See https://forum.kodi.tv/showthread.php?tid=276002&pid=2642201#pid2642201


[B]Advanced Emulator Launcher | version 0.9.6 | 20 May 2017[/B]

FEATURE  Set Parent/Clone property so skins can display flag.

FEATURE  Support ERSB and NPlayers in offline scraper.

FEATURE  Support ERSB and NPlayers in online scrapers.

FEATURE  Virtual category to browse the Offline Scraper database.

FEATURE  Updated the number of databases in the Offline Scraper.

FEATURE  ROM scanner reports.

FEATURE  Refurbish ROM auditing and Parent/Clone view display mode.

FEATURE  Added a "Display ROMs" setting valid only in Parent/Clone display mode.

         See http://forum.kodi.tv/showthread.php?tid=287826&pid=2581878#pid2581878
         See http://forum.kodi.tv/showthread.php?tid=287826&pid=2582004#pid2582004

FEATURE  Support Redump DAT files. Note that Redump does not include Parent/Clone data so all
         ROMs are Parent ROMs.

FEATURE  New platform Panasonic 3DO.

FEATURE  Update NFO files after scraping. This is useful to interrupt the scanner when scanning
         large collections and resume scanning later.
         See http://forum.kodi.tv/showthread.php?tid=287826&pid=2548998#pid2548998

FEATURE  Allow only one instance of AEL running at a time.
         This prevents multiple launcher execution and also get rids forever of any database
         corruption issues due to concurrency! Thanks Roman_V_M for ideas about the fix.
         See http://forum.kodi.tv/showthread.php?tid=310697

FIX      Fixed crash when displaying a Launcher in Parent/Clone view with Unknown ROMs.

FIX      Fixed the number of ROMs counter when importing AL launchers.xml

FIX      ROM scanner ignores NFO files if option "NFO Files + Scrapers" is set.


[B]Advanced Emulator Launcher | version 0.9.6-beta1 | 5 March 2017[/B]

FEATURE  Import and Export of Launchers configurations. Will be very useful especially for 
         Android users.

FEATURE  Use a Window property to let skins know wheter a launcher OR ROMs are being rendered.
         Set xbmcgui.Window(10001).setProperty('AEL_Content', 'launchers')
             xbmcgui.Window(10001).setProperty('AEL_Content', 'roms')
         It must be set on entering and unset on exiting the plugin.

FEATURE  Use setProperty() to inform the skin about ROM flags:
           1) Favourite status: OK, Unlinked ROM, Unlinked Launcher, Broken
           2) No-Intro status: Have, Missing, Added, Unknown
           3) Parent/Clone status: Parent or Clone (Boolean)

         For example:
           setProperty('AEL_Fav_stat',     'Fav_OK')
           setProperty('AEL_NoIntro_stat', 'NoIntro_Have')
           setProperty('AEL_PClone_stat',  'PClone_Parent')

FEATURE  Add Retroplayer support.
         See https://github.com/Wintermute0110/plugin.program.advanced.emulator.launcher/issues/33

FEATURE  New menu for the virtual launchers [Browse by ...]

FEATURE  New virtual launchers [Browse by ESRB Rating] and Browse by [Number of Players].

FEATURE  Added new platforms Xbox One, Nintendo Switch, Nintendo Wii U, PSX 3 and PSX 4.

FEATURE  Clearlogos in Categories, Launchers and ROM Collections.

FEATURE  Edit clearlogos in Categories.

FEATURE  Edit clearlogos in Launchers.

FEATURE  Edit clearlogos in ROM Collections.

FEATURE  Default to launcher icon if ROM icon is missing.
         See http://forum.kodi.tv/showthread.php?tid=287826&pid=2500040#pid2500040

FEATURE  Update launching mechanism. User Python subprocess module on all platforms and not the
         deprecated os.system(). Current patched subprocess_hack module is from Python 2.4. Current 
         Python version in Kodi is 2.7.
         os.system(), os.open(), etc. are deprecated, and the subprocess module should be used 
         instead for all platforms. A parser of arguments must be coded in order to use the 
         subprocess module.

FEATURE  Log emulator/standalone launcher stdout/stderr into a file. Requires new launching
         mechanism based on subprocess module. Have a look to AML for an implementation.

FEATURE  Add nplayers metadata field to ROMs. Billyc999 database has nplayers NFO.
         See http://forum.kodi.tv/showthread.php?tid=287826&pid=2407055#pid2407055

FEATURE  Edit nplayers in ROMs.
         
FEATURE  Add ESRB/MPAA/PEGI rating? >> User ESRB, new metadata field esrb in ROMs.

FEATURE  Edit ESRB in ROMs.

FEATURE  Support for multidisc systems. Have a look to NOTES.md for more details about the AEL
         implementation.
         See http://forum.kodi.tv/showthread.php?tid=287826&pid=2495480#pid2495480

         AL ROM scanner only added the first disc to the database and skipped disc numbers
         from 2 to 9.
         https://github.com/Wintermute0110/plugin.program.advanced.launcher/blob/master/resources/lib/launcher_plugin.py#L2088

         At ROM launching, if any of the strings ['.cd1', '-cd1', '_cd1', ' cd1'] is found on the
         ROMfile basename then the rompath was scanned looking for all the discs. User selected
         the disc number to launch from a select dialog.
         https://github.com/Wintermute0110/plugin.program.advanced.launcher/blob/master/resources/lib/launcher_plugin.py#L1688

         AEL will use a better implementation based on a ROM filename parser. See NOTES.md

FEATURE  Delete ROM context menu integrated in Edit ROM.

FEATURE  Display number of ROMs in launcher.

FEATURE  Platform icons/clearlogos in AEL. Platform icons can be an icon of the console or gamepad.
         EmulationStation has a lot of material that can be reused for AEL.

FEATURE  Improved No-Intro audit.

FEATURE  Remove No-Intro Added status.

FEATURE  New style Parent/Clone launchers, ala Advanced MAME Launcher.

FEATURE  Print number of parent and clones in PClone launchers.

FEATURE  Split Launcher report into statistics, metadata and asset reports.

FEATURE  Include databases for all supported platforms in AEL offline scraper (well... at least
         included more databases).

FEATURE  Updated Offline scraper MAME database from 0.173 to 0.183.

FIX      Fixed crash when editing Collection ROM position.

FIX      Keep order when Collection ROM is relinked.


[B]Advanced Emulator Launcher | version 0.9.5 | 12 January 2017[/B]

FIX      Fix ROM Collection exporting/importing.

FIX      Properly remove HTML tags in MobyGames metadata scraper plot.

FIX      ROM substitution keywords now use $ instead of the ugly %.
         %rom% becomes $rom$

FIX      Added new argument substitution keywords $rombasenoext$, $categoryID$, $launcherID$,
         and $romID$.

FIX      Fixed issues #31 and #32 (FileName class related stuff). This should fix also
         "Edit Launcher" -> "Manage ROMs" -> "Scan for local artwork/assets"

FIX      Fixed error in the ROM scanner when using semi-automatic scraping.


[B]Advanced Emulator Launcher | version 0.9.5~beta2 | 27 December 2016[/B]

FIX      Fixed crash when scanning ROMs and the asset scraper is ON.

FIX      Improved ROM scanner debug output. Will make it easier to read scanner logs.

FIX      Fixed crash in "Edit Launcher" -> "Manage ROM List" -> "Rescan ROMs local assets"
         See http://forum.kodi.tv/showthread.php?tid=287826&pid=2479446#pid2479446

FIX      Fixed crash when adding single ROM.
         http://forum.kodi.tv/showthread.php?tid=287826&pid=2484522#pid2484522

FIX      Fixed several uses of old function misc_split_path(). Now FileName() class must be used.


[B]Advanced Emulator Launcher | version 0.9.5~beta1 | 13 December 2016[/B]

FEATURE  New Arcade Database online metadata/asset scraper for MAME ROMs.

FEATURE  Support for several arguments in launcher. This will be useful when using MAME for
         console emulation (MAME consoles from a different region have different names, and an
         European console will typically refuse to run a Japanese game).
         Survey about this: http://forum.kodi.tv/showthread.php?tid=287826&pid=2467547#pid2467547

FEATURE  New command SHOW_ALL_ROMS to render all ROMs in all launchers. Will be used by skins.

FEATURE  Supend/resume Kodi audio engine at launching. This will prevent sound problems in Linux. 
         Include a setting for this in addons "Settings" --> "Advanced".

FEATURE  Export/Import assets/artwork in ROM Collections. Encode binary files in base64 and put
         in an auxiliar JSON files. Exporting assets should be optional, not mandatory.

FEATURE  Extranafart for ROM Collections.

FEATURE  All requests are cached in TheGamesDB scraper.

FEATURE  All requests are cached in GameFAQs scraper.

FEATURE  All requests are cached in MobyGames scraper.

FEATURE  Resolve image URL for online asset scrapers. This will increase scraping speed a lot.
         Requires a change in the scraping API.

FEATURE  TheGamesDB scraper now returns Titles and Snaps. However, since there is no difference
         between Titles, Snaps and shots in TheGamesDB this only is useful when doing manual
         scraping.

FEATURE  Improve message reporting in Kodi GUI when scanning ROMs.

FEATURE  Improve launcher report and include is a No-Intro audit information.

FEATURE  Remove ROM tags (for example, (Europe), [Rev A]) from parent ROM names when showing 
         parent ROMs in a PClone launcher.

FEATURE  New No-Intro status 'Added'.

FEATURE  Browse by Category Virtual Launcher.
         http://forum.kodi.tv/showthread.php?tid=287826&pid=2458080#pid2458080

FEATURE  Deal with Kodi virtual filesystem smb:// paths. Merged a massive patch by Chrisism.

FEATURE  New platform "Microsoft Windows"

FEATURE  Add genre, plot and rating to ROM collections. Unify ROM Collections and Cateogories
         metadata. During the migration current collections names will be lost and user has
         to edit every ROM Collection and set a new name.

FEATURE  Request monospaced font on text viewer dialog (window 10147).

FIX      Fixed searches in launchers.

FIX      Fixed artwork display in ROM Collections (Icon/Fanart/Banner/Poster).

FIX      Fix "launching app not found lnk_launcher_app" error in Windows LNK launchers.

FIX      Remove setContent() old code.

FIX      Fixed the case of removing all categories and having just Standalone/ROM launchers on 
         addon root.

FIX      Fix offline scraper search when there are hypens in filename.
         http://forum.kodi.tv/showthread.php?tid=287826&pid=2461203#pid2461203


[B]Advanced Emulator Launcher | version 0.9.4 | 16 October 2016[/B]

FEATURE  Create ROM and standalone launchers in addon root. "Categoryless" launchers.

FEATURE  Improve the repairing for Favourite/Collection ROMs once and for all.

FEATURE  Parent/Clone launcher display option when using No-Intro DATs.

FEATURE  [Recently played ROMs] Virtual Launcher. List of ROMs played in reverse chronological
         order.

FEATURE  [Most played ROMs] Virtual Launcher. Histogram of how many times a ROM has been played,
         ordered by the number of times a ROM has been played.

FIX      Fixed loading of No-Intro files.

FIX      Fixed "Edit Launcher" >> "Choose default Assets/Artwork..."

FIX      Fixed "Add new Launcher" context menu in non-Windows platforms.


[B]Advanced Emulator Launcher | version 0.9.3 | 8 October 2016[/B]

FEATURE  LNK ROMs Launcher in Windows.

FEATURE  Rename launcher ROMs JSON file if Launcher name changes.

FEATURE  Favourite/Collection ROMs can be updated with information from parent.

FEATURE  Reorganised all Edit Asset/Artwork context menus.

FEATURE  Reorganised and improved all ROM context menus.

FEATURE  Increased the number of AEL platforms to 50.

FEATURE  Setting options to hide [Fav] and [OK] labels in Launcher/Collection/Favourite ROMs.

FEATURE  Setting options to hide Favourites and ROM Collections.

FEATURE  ROM Collections can be imported/exported and shared with other people.

FEATURE  ROMs in a Collection can now be edited.

FEATURE  Move ROMs up/down in collections has been moved from Collection ROM context menu into
         Edit ROM in Collection context menu.

FEATURE  Collection ROMs can be placed in any position in the Collection easily via the context
         menu.

FEATURE  Edit ROM -- Edit Metadata shows all available metadata scrapers, not just the one
         selected in settings. The metadata scraper selected in plugin settings is only used
         when scanning ROMs.

FEATURE  Edit ROM -- Edit Assets/Artwork now automatically chooses the scrapers available
         depending on the asset selected.

FIX      Fixed launching of standalone launchers having LNK files in Windows.

FIX      Fixed launching of ROM launchers having LNK files as ROMs in Windows. Any executable can
         be chosen as the launcher program (it will be ignored), expect an LNK file.

FIX      Fix information dialogs in _command_remove_rom() (shown when deleting a ROM).

FIX      Fixed scraping of launchers in context menu Edit Launcher -- Edit Metadata. Now user is
         able to choose scraper.

FIX      Fixed TheGamesDB platform names.

FIX      Removed Categories 'default_clearlogo' and Launchers 'default_clearlogo' JSON data files
         introduced by error in previous versions.
         ROM STORAGE IS INCOMPATIBLE WITH PREVIOUS VERSIONS OF AEL!!! 
         MIGRATION: automatic. XML writer will remove those fields as soon as categories.xml 
         is rewritten.


[B]Advanced Emulator Launcher | version 0.9.2 | 26 September 2016[/B]

FEATURE  Display assets when editing ROMs using the ImgSelectDialog class.

FEATURE  Collection ROMs can be repaired/relinked, like Favourite ROMs.

FEATURE  Versioned ROM storage JSON files for Favourites and ROM Collections.
         NOT COMPATBLE WITH PREVIOUS AEL VERSIONS!

FEATURE  Reorganised context menu in Favourites/Collection ROMs.

FEATURE  Relink Favourite ROMs with Unlinked Launchers or Broken parent ROMs.

FEATURE  Tell if scrapers support asset or not in "Edit ROM" -- "Edit Assets/Artwork..."

FEATURE  TheGamesDB asset scraper working OK.

FEATURE  GameFAQs asset scraper working OK.

FEATURE  MobyGames metadata scraper.

FEATURE  MobyGames asset scraper.

FEATURE  Initial implementation of Arcade Database metadata scraper.

FEATURE  Ratings can be edited now for Categories/Launchers/ROMs.

FEATURE  Improved URL page data retrieve function.

FIX      Include 3 characters of the object ID in artwork directories. This avoids overwriting of
         images in Favourites if there are 2 ROMs with same name from 2 different launchers.

FIX      Use ROM title instead of rombasename in launcher notification. For standalone launchers use
         then Launcher title.

FIX      Add Clearlogo to "Edit Launcher" -- "Manage ROM asset directories..." menu.

FIX      Do not include empty strings when checking for repeated asset directories.


[B]Advanced Emulator Launcher | version 0.9.1 | 6 September 2016[/B]

FEATURE  Invalid characters in launchers.xml are fixed before importing AL legacy launcher/ROMs. 
         A copy of the fixed launchers.xml is placed in AEL ADDON_DATA_DIR.

FEATURE  Check if there are duplicated asset directories. This will avoid overwriting of
         artwork files!

FIX      Changed video supported extensions from [mpg, mpeg, avi] to [mov, divx, xvid, wmv, avi, mpg,
         mpeg, mp4, mkv, avc].

FIX      Fixed issue 21: Crash when adding ROMs using _roms_add_new_rom().

FIX      Fixed edition of asset directories in "Edit Launcher" -- "Manage ROM Asset directories..."


[B]Advanced Emulator Launcher | version 0.9.0 | 22 August 2016[/B]

* Initial release.
