v20.2.5 The less notorious B.I.G
Features
Add callback hooks to run Mycroft as a service #2601
This adds a simple system of callback hooks to run mycroft as a service or through a single executable. It allows the definition of a wrapper script with handlers for ready states, error states and a watchdog to ensure the system is still running.
The current watchdog implementations are currently only for the speech client (voice data is received from the mic) and the Skills process (skills are updated) due to their natural cyclic structure.
Big thanks to @forslund for this and all his contributions to this release. There are too many to count!
Add GUI support for animated images #2616
New method show_animated_image()
added to Qt GUI framework providing a GUI page for displaying animated gif files. Thanks to @JarbasAl for this and all his new GUI Skills.
Add method for updating playback information from Skills #2619, #2655
This adds a common method for Skills to send playback information and status to the Common Play Skill. There are ongoing discussions about the complete management of playback between Skills, Common Play, and audio services. Special thanks to @AIIX and @JarbasAl for their ongoing work on this.
Gentoo Linux support added to setup scripts #2583
Gentoo users can now run the standard dev_setup.sh
script and their OS will be detected allowing the correct dependencies to be installed. Big thanks to @doczkal for this one!
Snapcraft CI #2597
Continuous Integration implemented for Mycroft Snap releases.
Add 'Skill should not reply' test #2618
A new Voight Kampff Step was added allowing integration tests to check that a particular Skill does not respond to some utterance. This helps to ensure your Skill only responds to questions it can handle reducing unexpected errors.
Add wait_for_message() method #2628
This method will wait for a message of a specific type to be detected on the messagebus, returning the message if detected before the timeout has expired.
Add Festival TTS support #2643
Thanks to @jmontane for this addition, enabling on-device TTS for Catalan (and other language) speakers!
Bug fixes
Workaround for issue on older versions of ncurses #2591
get_wch()
can at times throw errors as reported in Issue #2523, this creates a function wait_for_any_key()
handling the error and retrying.
Prevent audio playing between recording and handling of utterance #2621, #2625
This maintains silence for a short period while Mycroft is actively processing a request providing a better experience for the user. It means media playback completely stops the moment a user asks it to, and prevents short snippets of audio playback if Mycroft is formulating a response.
Fix Skill submodule loading and replace imp with importlib #2327
Replaces the current imp based Skill loader with an importlib based solution. Adds a small change allowing better use of submodules allowing them to reload together with the main module.
Fix Common IoT Skills unable to register entities and scenes #2636
Thanks to @jamesmf for this fix!
Ensure custom timeout is passed to wait_for_response method #2634
Fix Mimic builds on Fedora #2521
Thanks to @countcretinos for this one!
Fix writing multiple settings to file #2652
Thanks to @emphasize for reporting this one.
Improve language configuration handling in IntentService #2650
If the STT service does not send a language code with the message, then the Intent Service will now fallback to the globally defined language, or en-us if none is defined.
Ensure default Skills are installed before initial load #2644
This adds a quick check on load to ensure default Skills are installed, unless they are blacklisted. If not installed it will do so before finalising Mycroft's boot sequence. This will only extend the boot time if important default Skills are not available.
Update Lingua Franca to v0.2.2 #2654
Primarily bug fixes - see release notes for more details. Thanks to @ChanceNCounter, @emphasize, @forslund and @PureTryOut
Disable wake word uploads in preparation for API deprecation #2661
The API endpoint used to upload wake words will be deprecated in the near future and instead shifted to Selene (home.mycroft.ai). To ensure older devices are not making unnecessary post requests to a dead endpoint, the upload has been disabled for devices running v20.2.
Other improvements
- Refactor wake-word waiting and record phrase #2589
- Cleanup settings system #2560
- Improved list of available commands in
mycroft-help
#2613 - Update pyee to v7.0.1 - replaces home-spun threadpool based emitter with ThreadExecutor from pyee #2507
- CI improvements #2537, #2541
- Remove duplicate check for supported languages of Lingua Franca methods #2649. Another thanks to @emphasize for reporting this one.
Community Contributors
Another big thanks to all the Mycroft Community members that contributed to this release: