Releases: MycroftAI/mycroft-core
v20.2.0
We're not out of beta but we're releasin' on time! In the best possible way!
A major release like this is an opportunity for us to clean up some of the older things and make future development easier and cleaner. The improvements over 19.08.0 are now many thanks to the work of the core team and the awesome community of developers and users.
v20.02 brings some changes, some old deprecated code has been removed making core a little bit leaner and some huge contributions has made it in (targeted messages) along with the usual bag of minor fixes, and improvements.
Breaking changes in 20.02
- Skill settings are now a simple dict (Deprecated 19.08)
Skill settings are now a simple dict and procedure for registring settings changed callback and forcing a disk write of the settings has been updated
Registering settings changed callback (docs):
def initialize(self):
self.settings_change_callback = self.my_callback
def my_callback(self):
...
Write settings to disk:
from mycroft.skills.settings import save_settings
...
def skill_method(self, _):
save_settings(self.root_dir, self.settings)
-
The ConfigurationManager has been removed (Deprecated 18.02) #2470
-
The backwards compatibility language for
extract_datetime()
has been removed. #2469
The function now follows the documentation and returnsNone
if the utterance doesn't include a date or time. -
audio accuracy test is now wake word test
The test is moved from the mycroft module into the test folder.
Improvements, fixes and other greatness
Targeted messages #2461, #2476, #2478, #2481
This is something that has been discussed for a long time and now the implementation by @JarbasAl is here. The system allows for multiple clients to be connected to Mycroft and only returning the response to the caller client that called. For an example implementation check out the Hive Mind Voice Sat.
Added the commandline tool mycroft-listen #2460
@FruityWelsh created a simple commandline tool to trigger mycroft listening. Many thanks!
Make listener audio storage location configurable #2477
Thanks to @ludwhe the storage of utterances and detected wake words can be configured.
IntentQueryApi #2468
An API allowing a skill or application to query the state of the intent service, listing things such as registered intents, skill ids and other things. This is also the work of @JarbasAl
Deprecate use of #
in config file #2472
Using only // as comment makes the config compatible with tools such as jsmin. Big thanks to @belvederef for the initiative and implementation.
Improve Mimic2 error handling #2473
Server errors generating Mimic2 audio will now be caught and Mimic1 will be used as fallback.
Common Play tests and cleanup #2459
A series of unittests has been added to test the common play skill base class and the audioservice. As these were added a couple of minor bugs were resolved and the code was cleaned up slightly.
Tests for common query #2462
Adds test and fixes detection of visual platforms.
Simplify dialog loading #2422
The DialogLoader
class is now deprecated instead a simple get_dialog()
function is used.
v19.8.7
Few PR's lots of code changes!
The big change in this release is the removal of the language parsing/formatting code and instead relies on the lingua-franca module run by the Mycroft community (and @JarbasAI in particular who set up the project originally). Much discussion is going on in the mycroft chat language channel, if you're interested join us there!
Replace language parsing and formatting with lingua-franca #2438, #2464
This basically cuts 20 000 lines of code from mycroft-core (roughly 50% of the python code). Stubs still remains to retain backwards compatibility.
Allow stop-mycroft.sh to stop Mycroft if launched through other python module #2449
This relates to the work @andlo is making to make the skills easier to run in various IDEs. Big thanks to him for improving this side of things!
Upgrade pip to latest version #2458
The dev_setup.sh script will now install pip 20.0.2, besides bringing us uptodate this allows installs on bleeding edge systems running Python 3.9.
New decade!
I saw the future clearly. It was 20/20...
Mycroft has now entered the new year with a release, we're happy for all contributors old and new that are joining us in this Brave New World of 2020.
Documentation updates
- @TheLastProject corrected the non-metric version of the unit config in #2441
- @notdefine corrected the documentation on how to start the unittests with start-mycroft.sh
- The MycroftSkill members
root_dir
andsettings_change_callback
were added to the readthedocs documentation.
Test updates #2443, #2442, #2450
Tests were extended for the mycroft_skill, tts and audio modules, increasing code coverage by a couple of percent. In doing this some issues were identified and squashed.
- Mimic2 preprocessing is now active
- The fallback TTS can now trigger listening
- vlc playback backend works with tracks with mime-info
Make venv-activate work with sh and zsh #2439
We're always grateful when contributors make our scripts work with more platforms and tools. Big thanks to @notdefine for fixing this.
Make padatious multithreading configurable #2448
Padatious will default run multithreaded to speed up training but this is now configurable thanks to @andlo.
Upate gtts backend to be compatible with newer versions #2447
This allows mycroft to work with v2.1.0 and above of gTTS. Many thanks to @ansgar-t for this update.
Update msm to 0.8.5 #2452
This allows the installer skill to detect errors when installing.
End of playlist message
The audioservice will now send an end of playlist message after the last track has been played. This will be useful for restoring the resting screen after the last track or detecting the end of a sequence of steps in an prerecorded situation.
release/v19.8.5
The Mycroft Christmas release comes with a small bag of goodies this year, even if I won't be doing any rhyming like I did last year.
We've had 25 releases this year (unless this release is messed up somehow that's how we'll end). These 25 releases include the code contributions from no less than 41 community members (just on mycroft-core).
Settingsmeta stability #2370, #2433
The biggest thing in this release is an attempt to stabilize the settings upload. This will make sure that the skills page on Mycroft Home is populated as soon as the device is paired. It also tries to guarantee that the skills manifest is uploaded before any new changes to the settingsmeta are pushed making modifying skills easier.
Upgrade python dependency on Red Hat #2412
@maxbachmann replaced the old python34 package with the generic python package installing a more modern python version on Red Hat systems. Many thanks for that!
Allow Gui to connect again #2416
This is a quick work-around allowing the gui to connect to core over the enclosure bus again. A change in the recently upgraded tornado made this fail.
Allow showing DEBUG in CLI #2421
The cli now always disregards the DEBUG message filter, relying solely on the log level setting.
Fix Hotword selection when precise development models are activated #2418
The recent update of hotword config loading included a bug where the settings from different places wasn't merged correctly. This fix handles the merging properly.
Support for Porcupine hotword engine #2139, #2424
@alumae submitted a PR to allow the usage of the porcupine hotword engine by picovoice. Many thanks for this awesome feature.
Langauge parsing
- Handle extracting number from strings with %, many thanks @ChanceNCounter #2413
- Clean up time resolution code, also @ChanceNCounter! #2432
Documentation
- Readthedocs generation code was cleaned up #2399
- Typo fix, thanks @PFischbeck for spotting and fixing #2427
v19.8.4
This release comes with many small updates and more excitingly a couple of new contributors
Geolocation API #2393
The API is now prepared for the comming update of the mycroft backend offering a geolocation api. This will enable retrieving coordinates from names of places.
dev_setup.sh update #2388, #2390, #2401, #2403, #2406, #2414
- The dev_setup.sh os install instructions has been separated into separate functions to make the script a bit more easy to read. In addition to this the installer for Arch Linux and certain versions of Debian has been fixed. In addition a
--clean
option now exists allowing to wipe Mycroft from the system. Big thanks to @gbaptista, @maxbachmann for helping out with this.
msk 0.3.14
The latest release of msk adds License selections and the option to add a manifest.yml at skill creation time. And some splashes of color to make it more readable.
Python 3.8 #2391, #2400
Python 3.8 is now included in the Travis tests and is running the mycroft stack nicely.
Handle missing .intent files #2411
@domcross added a fallback to the en-us folder in case the .intent file doesn't exist. This allows skills that aren't fully translated to be loaded. Many thanks.
Language improvements
- Improve dutch language functions, thanks @mikewoudenberg #2385
- Speed up extract_number, thanks @maxbachmann #2402
- make time output more natural, thanks @maxbachmann #2386
Misc
- Fix simple audio backend Mimetype lookup when http request fails #2389
- Fix usage of Ctrl+C in the simple cli #2409
- Speed up the SSML tests, big thanks to @maxbachmann for this. #2405
- Clean up python2 remnants, big thanks to @maxbachmann for this. #2396
- Use flake8 instead of pycodestyle in travis. Thanks @cclauss #2251
- Update adapt to 0.3.4 #2394
- Simplify setting a custom wakeword #2395
v19.8.3 Mic drop
Yo it's my turn, do drop the mic,
old python 3.4 will have to take a hike
It's served long and well
It's been nice, it won't go to hellWe've come a long way since the early days,
we moved on and changed our ways
first python two had to go
It's 2019 and support for 3.4 is gone so
we'll follow suite drop this snake,
yo, hope you enjoyed this hot take.
Boom Mic drop.
Actual release notes
So as the poetry slam entry above indicated, as of this version (19.8.3) we join the rest of the Python community and dropping support for Python 3.4. This was originally planned for 19.8.0 but the packaging changes for the Mark-1 wasn't completed and tested in time. This change will allow us to start updating a couple of the dependencies to newer versions. We now officially support Python 3.5 - 3.7, 3.8 is on the horizon.
Fix Wakeword messagebus message #2367
The recognizer_loop:wakeword
message wasn't sent until after the STT was complete. Thanks to the work of @speedfox-uk the message is now sent as soon as the wakeword is detected.
STT and TTS error handling #2372, #2374
In case of errors when starting up the TTS and STT systems would fail quitely, Error logging has been added and a fallback mechanism using the default services.
Speed up external interaction with the messagebus #2371
The simple send script in the messagebus used by some of the mycroft commandline tools (mycroft-speak, mycroft-say-to) has been sped up by not requiring the remote settings to be fetched.
Drop python 3.4 changes #2381
In the process of dropping python gTTS was updated along with pillow (fixing a stability issue), and the
Bugfixes
v19.8.2 The quite early release
Due to a possible major bug (voice process going haywire and filling the disk) this release got moved forward a couple of days.
Improve mic handling #2365, #2368
Especially the Mic Array v2 seemed prone to throw IO errors, this release adds a basic restart control allowing it to recover in some cases. The change also adds some extra safety to the mute/unmute operations which could theoretically cause an issue. In addition this resolves a possible issue with looping logging if an IOError occured.
Ask Selection #2302
The new MycroftSkill.ask_selection()
method adds a simple way of asking the user to choose between a number of options. Many thanks to @JarbasAl for designing it. Read more about the method in the api documentation
Fix trigger listening over messagebus for Picroft #2366
The restructuring of how the get_response()
or speak()
with exepect_response=True
methods triggers listening missed a special case on the Picroft platform. This small one-line change resolves the issue.
Misc
- Handling of fractions in Spanish #2356 (Big thanks to @ChanceNCounter)
- Minor fixup of the project Readme #2352 (Thank you @moritzgloeckl )
v19.8.1
This release features mainly bugfixes for issues introduced in 19.8.0 but also a couple of very welcome improvements.
Replace the custom IS_TRAVIS environment variable with the standard CI #2252
Big thanks to @cclauss for handling this and making the setup more standardized.
Remove NTP sync reboots #2326
Recent updates has improved the stability during and after NTP updates so the reboot is no longer necessary.
Fix Mary TTS #2262
Many thanks to @KishCom for updating the MaryTTS backend into a functional state.
Remove Dialog repetition #2297
@ChanceNCounter is to be commended for this little tweak making sure that the same dialog line isn't used twice in a row.
Make sure get_response listen trigger is sent after the correct sentence #2351, #2360, #2361
Attaches the listen trigger to the last chunk of a sentence instead of relying on the audio_output_end message.
Spanish extract number improvements #2347
@ChanceNCounter fixed an issue where the numbers were summed instead of returned as a list
Update nice duration #2330
Thanks to @ChanceNCounter the nice_duration now takes resolution as an argument.
Bugfixes
- Crash in logger when starting skills #2323
- Load skill settings once only #2336
- Restore tail queuing of event handlers #2353
- Add missing
__delitem__
method in Settings #2354 - Make skill logs visible in tester #2359
- Fix default arguments for noce_number, many thanks again @ChanceNCounter #2330
Misc
v19.08.0 (Rocky Release)
At long last the 19.08 release is here.
During these last 8 weeks (time sure flies) we've focused on refactoring the code to improve maintainability and to make it easier to improve Mycroft in the future. This has led to some major shifts in the structure of Mycroft and some backwards-incompatible changes. Most of these changes was flagged in the 19.02.0 release and the ones that weren't generally doesn't impact skill developers.
Depreciations
- Skill settings:
MycroftSkill.settings.store()
andMycroftSkill.settings.set_changed_callback()
are deprecated and will be removed in v20.02.mycroft.skills.settings.save_settings()
will replace the first mentioned andMycroftSkill.settings_changed_callback
can be set replacing the second. Secondly this adds warning about features of the settingsmeta that hasn't been used since the switch to the new backend.
During the coming month we will look through and mark more deprecated features...
The Breaks
The following are the breaking changes included in this major release
MycroftSkill.config
no longer exists. Any skill specific settings should be made using the settings.json in the skills folder.- the
SkillManager
api was reworked and will not work as previously, locks are missing etc. - the listener config parameter
record_utterances
was completely replaced with thesave_utterances
Config.init()
to setup bus connections for the process configuration was replaced byConfig.set_config_update_handlers()
Message
parameter (and member)type
was renamed tomsg_type
WebSocketClient
was renamed toMessageBusClient
- Skill settings feature protecting existing members during the skill initialization was removed. This was a rarely used and frankly confusing feature
The big Reorganizations
Skill process startup #2237, #2260, #2263, #2265, #2279, #2280, #2311, #2316
Refactors the SkillManager
, moving complex logic into a couple of helper classes SkillLoader
and SkillUpdater
. Refactors the startup code to a simpler flow. All of this makes the startup of skills much speedier.
Skill Settings #2287, #2306, #2312, #2313, #2314, #2315, #2319, #2320
Major restructure splitting the settings metadata from the actual settings. This restores the skill settings to a simple dict instead of a vastly complex object.
Mycroft Skill #2256, #2276, #2281, #2296
The MycroftSkill
class was refactored moving some of the complexity into helper classes. This also makes way for adding some mycroft skill Utils
Skill tester #2284
The skill tester was reorganized to make the code easier to follow.
The Improvements
Pulseaudio ducking support #2282
The TTS can now trigger pulseaudio role ducking of roles (like music and video) lowering playing media while Mycroft is speaking
Improved operation without listening indicator #2267
The recording sent to STT lost a couple of audio frames right after the wake word trigger, this stores and prepends the lost frames to the STT data.
Handle Precise download errors #2245
Precise download could fail due to network errors and never restart leaving the user with pocketsphinx wakeword. This allows retrying and will use an existing precise installation if available.
Fedora install #2257
@vegerot contributed an update to the dev_setup.sh to make it work better on Fedora. Many thanks!
Mint install #2209
@fermulator fixed a couple of issues related to detecting Debian like OSes, this adds support for Mint among other distributions. Many thanks!
Keyword munging #2303
Long time contributor @JarbasAI found and fixed an issue with the keyword munging causing intents to fail if the intent contained the skill id. As always great work!
Fix Mimic 2 Cache usage #2301
Fixes an issue when the playback of the utterance wouldn't start if the .pho file for a cached utterance was missing.
Warn if packages may be uninstalled during dev_setup.sh #2268, #2275
This warns if a conflict in Ubuntu could lead to packages being uninstalled.
intent_handler decorator update #2221
the @intent_handler()
decorator can now be used with padatious .intent files as well as adapt intents.
Updated swedish time and number handling #2234
Big thanks to @c0r73x for fixing these issues!
Flake8 cleanup #2241. #2242
Many thanks to @cclauss for looking through the code and fixing these issues.
Clean the unittest from mocks from the mock module #2274
Instead use the builtin unittest.mock
. Many thanks to @mathmauney for contributing this.
Add support for bus.get_response in skill tester #2284
Add a basic mock of the get_response()
bus method.
Log viewer tool #2277
A simple tool for merging and viewing all mycroft log files.
Configuration tool #2290
This tool validates configuration files before storing them making it harder to destroy a config.
Make connection test more robust #2305
Make a dns lookup as part of the test to validate that part along with the reachability of the outside world.
Pairing check updates #2180, #2248
Make sure the pairing check fails early if the identity information is missing and only initiate pairing for 401 errors from STT services behind mycroft pairing.
v19.02.14
This is one of those general improvement releases with lots of minor and some major things making quite a noticeable difference.
Refactor messagebus subsystem #2213
The code surrounding the messagebus was heavily refactored and improved.
voice service startup improvements #2183
The voice config was read multiple times on boot resulting in up to 4 restarts of precise when starting the service. this was resolved by improving the configuration change detection and loading of the service.
Speedup skill service startup #2197
The skill startup was reorganized slightly to load skills before trying to update as well as launch the settings fetching in a thread instead of blocking skill loading.
Speedup audio service startup #2228
The TTS service was loaded twice on startup, a fix in handling the config hash fixed the issue.
Update "yes" aliases #2190
@strugee submitted a couple of extra words for use when handling ask_yes_no()
. Many thanks for that.
Improve metrics #2196, #2198
Only report stt timing if an utterance was returned and report skill id for skill handlers.