Mycroft Core, the Mycroft Artificial Intelligence platform.
message.data
consistent with converse. (#2997) by @NeonDanieldev_setup.sh
(#3042) by @HFabiInterceptAllBusClient
(#2990) by @chrisveilleuxuse_2to3
(#2996) by @krisgeslingmycroft-config
set using pre-XDG path (#3015) by @goldyfruitGUIWebsocketHandler
methods (#3036) by @krisgeslingBig shout out and thanks to our Community Contributors for this release: :tada: @el-tocino :tada: @forslund :tada: @Genei180 :tada: @goldyfruit :tada: @HFabi :tada: @in03 :tada: @Joanguitar :tada: @NeonDaniel :tada: @PureTryOut :tada: @rooky-c3bo :tada: @saymantech-co
Mycroft-core v21.2.1 is an iterative release with a whole smattering of goodies.
Most noticeably mycroft-core is becoming compliant with the XDG Base Directory specification. This moves some files from their traditional directories, to those defined by the XDG spec:
Mycroft Skills currently remain at /opt/mycroft/skills/
A series of improvements have also been made to the Voight Kampff test suite to make them more reliable and robust. The better our tests, the quicker we can push other updates.
lang=None
to Lingua Franca (#2927) by @ChanceNCounterthen_wait()
(#2951) by @forslundThanks as always to our Community Contributors for this release: :tada: @AIIX :tada: @ChanceNCounter :tada: @clusterfudge :tada: @el-tocino :tada: @forslund :tada: @HKalbasi :tada: @JarbasAI :tada: @mathmauney :tada: @PureTryOut :tada: @rzr :tada: @strugee
skill_id
to converse error msg (#2827) by @krisgeslingvoc_match
for exact matching (#2858) by @JarbasAl and @krisgesling/tmp
directory (#2892) by @dzekem and @krisgeslingget_response
(#2838) by @forslunddoas
, a sudo
alternative (#2690) by @pixelherodevself.gui.connected()
to check if a GUI is connected (#2682) by @JarbasAlself.gui.get()
to safely access values in GUI dict (#2820) by @krisgeslingself.gui.release()
to signal that the Skill is no longer using the GUI (#2766) by @JarbasAldialog_renderer
when no dialog or locale directory exists (#2685) by @katridi--no-video
flag to VLC audio backend (#2791) by @JarbasAl_handle_pairing_complete
(#2790) by @forslundduration_stretch
configuration (#2691) by @forslundskill_id
parameter for page interaction and focus events (#2732) by @AIIXLock.exists()
(#2721) by @Nihvelgui.clear
does not close a Skill (#2769) by @krisgeslingFeatures:
Bugfixes:
Removal of deprecated items:
pyee.EventEmitter
and our own ThreadedEventEmitter
converted to new Emitters available in pyee #2667
mycroft.conf
#2668
skills.converse.error
will no longer be emitted, please use skills.converse.response
instead #2669
startListening
signal will no longer be checked #2670
DialogLoader
class removed in favor of new load_dialogs
function #2671
get_http
and remove_last_slash
string utils have been removed #2672
mycroft.util
have had their references removed. This includes mycroft.util.is_speaking
, mycroft.util.wait_while_speaking
, and mycroft.util.stop_speaking
. The methods should be called from their new module mycroft.audio
#2678
imp
package has been completely replaced with importlib
. This was located in the Audio service loading and loading of the old integration test environment #2679. Audioservice submodules names are now prepended with "audioservice_" to prevent module naming collisions #2684
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!
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.
mycroft-help
#2613
Another big thanks to all the Mycroft Community members that contributed to this release:
This release of Padatious adds support for saving and loading intent models courtesy of @repodiac, and better handles apostrophes thanks to @stratus-ss.
Added support for setting user configurations through Given
Steps in the form: "Given the user's {config} is {value}"
.
Added a clean command to remove any test, step and configuration files that have been copied to the Voight Kampff directory by the test runner. To clean up use ./start-mycroft.sh vktest clear
, mycroft-start vktest clear
or mycroft-skill-testrunner vktest clear
.
Added "loose" requirements option, allowing pip install to use ">=" instead of "==" for all packages. This is done by setting the MYCROFT_LOOSE_REQUIREMENTS
environment variable. The intention is to make mycroft packaging for linux distributions easier while allowing the git installation to still use a locked set of module versions.
The ever growing requirements.txt has also been split into core requirements, and a range of optional requirements files. This reduces the number of packages being installed unless the system will actually make use of them. It also paves the way for automatic installation of plugin dependencies. Big thanks to @PureTryOut for this one.
Removed xmlrunner
as it is no longer used.
Skills will now read and store settings in the XDG_CONFIG_DIR
if it is set and the device isn't already using the existing settings location in each Skill directory.
The standard setup script will now detect Alpine Linux and install the appropriate dependencies. Another big thanks to @PureTryOut for this and the range of work that has gone into making Mycroft compatible!
The @adds_context
decorator has optional content that should be passed to the set_context()
method. This was not being passed along. This has been resolved with tests added.
Allows the removal of a fallback handler using the original handler, and not the wrapped handler used internally. Along with a range of tests to verify setup and shutdown of Fallback Skills.
ESpeak output was produced directly from the executable, this is now through the standard TTS output queue like the other TTS modules. This resolves an issue with wait_while_speaking
.
This got missed in the last release but is definitely included this time. To get setup check out the documentation. Thanks again to JarbasAl from the Chatterbox team for this one!
The audio service would crash whilst importing the google_tts module on startup if no internet connection was available as it failed to fetch a list of supported languages. This update prevents the crash and adds a cached to use if the remote list is unavailable.
This release of Mycroft Skills Kit v0.3.15 switches Github authentication to use Personal Access Tokens as the existing username and password method is being deprecated. A huge thanks to Andlo for all his work on this. It also includes a small bugfix to respect the --repo-cache argument courtesy of Jarbas.
The IBM Cloud Text to Speech connector has been rewritten to handle IBM's new authentication mechanism. Massive thanks to @CodyReinold for this one.
This update improves clarity, fixes broken links and makes it easier for new developers to contribute to the project . Another big thanks to @CodyReinold
Initial language support added for Czech by @Tony763 and Polish by @RafalJanicki. Support for these languages is also underway in our Lingua Franca library.
When installing Mimic1 with no core paramater, it will now default to a safe value running on a single core. Thanks to @el-tocino for this.
A wide range of tests have been added to various utilities and functions. This includes tests for audio, caching, downloads, files, strings and time.
The test runner has also had some tweaks. It will explicitly execute with Python 3, addressing an issue where the system would hang if a generic Python alias did not exist. It will also ignore directories not intended to be tested with Pytest. Big thanks to @PureTryOut for both of these fixes!
Pillow has been updated to v7.1.2
This release is focused on testing and includes the Voight Kampff test suite along with improved unit tests. Of course, the wheels of the community is always spinning so there are some juicy additions and fixes as well.
The new behavioral skill / core test suite is run on each PR to mycroft-core and mycroft-skills allowing easier identification of bugs and bad behavior. For more information on how to write this type of test check out the official documentation. The system is still in early development and will be built out more and more to completely replace the current test system.
Thanks to awesome work by @dalgwen Mycroft now supports using multiple snowboy hotwords.
To allow longer voice input or timeout after silence these new config options can be used.
@JarbasAI polished up his old Polly TTS Pull request and it finally got merged, giving mycroft the ability to use Polly for rendering speech of a variety of languages.
The Google TTS backend no longer require a specific configuration, instead it tries to determine the correct language code to use from the global lang config option. Many thanks to @luca-vercelli for this contribution
IBM Watson's TTS Api has been updated and now Mycroft's interface has been updated as well to match.
These updates fixes a couple of issues with the shutdown process of skills and enclosure allowing them to be shutdown without being killed.
@JarbasAI's second PR this release, this adds an interface to retrieve the current color of the Mycroft Mark-1 eyes.
The GUI interface was simplified to use a single websocket connection while still isolating the clients, this fixed a regression due to upgrade of Tornado.
This fixes some issues with rendering numbers and dates. Many thanks to @ChanceNCounter and the LF-crew for this.
Adding tests is always a good way to find and squash bugs. This handles a couple of modification during iteration issues.
wait_for_response()
method #2479A big thanks to all who has contributed to this release, you are all my favorite persons in the world.
This contains mainly minor bugfixes.
Fixes issues loading skills if a skill is installed using a git/git+ssh url
Fixes an issue where converse state wasn't informed on user silence
Fixes updating the enclosure firmware on each boot.