Mycroft Core Versions Save

Mycroft Core, the Mycroft Artificial Intelligence platform.

release/v20.2.0

4 years ago

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 returns None 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.

release/v19.8.7

4 years ago

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.

release/v19.8.6

4 years ago

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 and settings_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

4 years ago

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

release/v19.8.4

4 years ago

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

release/v19.8.3

4 years ago

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 hell

We'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

  • Handle negative frame count in Mic code #2377
  • Remove unnecessary code when using relative time #2364
  • Fix Error when shutting down a removed skill #2376
  • Fix reference leak in websocket client #2375
  • Fix Spanish Datetime tests running on November 1 #2378

release/v19.8.2

4 years ago

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 )

release/v19.8.1

4 years ago

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

  • remove skill manager classes config property #2283
  • .gitignore updated with vscode and coverage folders #2334
  • Add better logging for voice client #2331
  • Add mute information to the mic_status file #2317

release/v19.8.0

4 years ago

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() and MycroftSkill.settings.set_changed_callback() are deprecated and will be removed in v20.02. mycroft.skills.settings.save_settings() will replace the first mentioned and MycroftSkill.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 the save_utterances
  • Config.init() to setup bus connections for the process configuration was replaced by Config.set_config_update_handlers()
  • Message parameter (and member) type was renamed to msg_type
  • WebSocketClient was renamed to MessageBusClient
  • 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.

release/v19.2.14

4 years ago

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.

Misc

  • Fix readthedocs documentation #2206
  • Allow may to not be a month #2187
  • Fix resting_screen_handler code when no name is provided #2185
  • configurable log locations #2192
  • fetch settings when pairing is completed #2211
  • Fix dev_setup.sh if terminal can't display color #2216