Releases: MycroftAI/mycroft-core
Minor release
New text parsing util fuzzy_matching #1315
The function matches similar text like "orange" and "oranges" and gives a score 0-1.0.
Translate namedvalues #1313
the MycroftSkill class now has a translate_namedvalues()
method returning a dict with keys in the current language. The dict is read from a csv file in the `/xx-xx/File.values looking something like:
# List colors and their hex RGB values
alice blue, #F0F8FF
antique white, #FAEBD7
aqua, #00FFFF
Misc
Mark 1 Boot Sequence
Visual Cues during Mark 1 Boot Sequence (#1308)
The Main focus of this release is creating visual feedback during the Mark 1 boot
sequence. The eyes and faceplate now provide indicators of the stage of the system:
- Spinning gray eyes
The system just started, Arduino running and Pi booting - Solid gray eyes
Pi booted - (Optional) Orange eyes, update message on faceplate
Flashing new sketch to the Arduino - Yellow eyes
Mycroft starting, waiting on internet connection - Yellow eyes, update message on faceplate
Updating software from the web - Blue eyes (or user selected color)
Mycroft ready for use!
Additionally, the gray eye color and an update message will return during system upgrades.
Command Line Interface (CLI) (#1299)
Two new minor feature for the mycroft-cli-client:
- Ctrl+Right and Ctrl+L allow scrolling through the command line history
- New ':clear log' command cleans out the old log message from the display
Bugfixes
- Values in the settings.json were overwritten if skills initialize self.settings['key'] in init (#1304)
- Bad settingsmeta.json prevented skill from loading and showed a convoluted error. Now a useful message is logged with the JSON error message and the skill continues to load. (#1300)
- Add missing 'self.' in an obscure corner of the Enclosure code. Thanks JarbasAI! (#1302)
- The MycroftSkill.translate*() functions were not correctly rendering mustache values with 'double mustaches', such as "This a a {{value}}" (#1303)
- Fix Unicode issues in Portugese version of extract_datetime() utility. (#1301)
- Missing space in shell script prevented creation of a directory when switching to Github install in mycroft-use.sh utility (#1298)
Skill creators rejoice
Get response #1278
get_response()
method added to MycroftSkill. The method allow skill creators to synchronously wait for a users response inside an intent handler. The method takes a dialog reference as argument. The referenced dialog will be spoken and listening will be triggered. The user response will be returned from the method.
def echo(self, message):
response =self.get_response('what.should.I.repeat')
self.speak(response)
Global skill settings #1290
Skill settings are now default per user not per device. This means instead of having multiple entries for a skill under the "Skills" tab a single entry will be visible and used by all devices.
Skiller #1282
skiller.sh script updated. The skiller.sh
script creates a standard template for building a new skill, including skill class, readme and license.
Translate text #1288
New translate methods to help internationalization of skills. The new methods are translate()
, translate_template()
and translate_list()
.
body = self.translate_template('email.template', {'from': data['name']})
self.send_email(self.translate('You have a message!'), body)
Above example will get the localized version of the email.template.dialog
file and render one of the entries as a string. The string will then be sent as body in an e-mail message.
Unnamed intents #1280
IntentBuilder
can now be used with empty names: IntentBuilder('').require('intent')...
. If left empty the handler method name will be used.
Misc changes
- Corrected test coverage #1272
- Speech related fixes, correct
isSpeaking
#1283, Fix protection from intermixing utterances. #1291 - Update CLI, minor fixes and changes to keyboard interface. #1284
mycroft.awoken
is now sent when speech client is awoken from sleep. #1279- fix status messages sent from msm to mycroft messagebus. #1275
API updates
Send E-mail #1230
The skills API now includes a self.send_email()
method allowing the skill to send an e-mail to the user. Practical if the skill wants to send a link to the user or for things such as shopping lists.
Metrics #1247
The DeviceApi
now includes a metrics
method allowing skills and core to upload information to the Mycroft server should the user allow it. The method is very general purpose and can take any method as long as it can be serialized to json.
Skills developer can easily access this functionality using the self.report_metric
method in the Skill API.
Misc
- Added support for Google Cloud API SST, big thanks to @ahayworth for providing this. #1226
- The AudioService can now add files to currently playing playlist #1197
- Listening can now be triggered from the messagebus by sending
mycroft.mic.listen
#1244 - Remove pystache dependency #1235
- Improve lip synch #1242
- Code cleanup and bugfixes, Many thanks to @gauravMann for cleaning up the usage of mutables as default arguments.
Packaging fix
Minor release with a critical Debian packaging fix to v0.9.5 that corrected a mistake creating incorrect ownership of the /etc/sudoers
file.
Introducing Precise
Precise wake word engine #1199, #1207
New machine-learning based wake word listener. This system includes a feedback loop, allowing user-contributed information to be incorporated into the training database, improving the wake-word performance. This happens when Opt In has been chosen at home.mycroft.ai.
Precise is enabled by changing /etc/mycroft/mycroft.conf to include:
{"hotwords": {"hey mycroft": {"module": "precise"}}}.
API enhancements
- Add MycroftSkill.get_intro_message() method which skills can override when they wish to provide instructions to the user after installation. (#1211)
- Extend scheduled event mechanism with MycroftSkill.get_event_status(), MycroftSkill.remove_event() (#1193)
Utility changes
- Add
msm list
command to show already installed skills; andmsm info <skill>
command to display info from the README.md in the skill's Github repo. Thanks @theCalcaholic! (#1201, #1202, #1203 ) - Add 'all' option for mycroft-stop utility to mirror mycroft-start (#1212)
- Changed mycroft-use utility to autoremove when switching from unstable to stable builds. (#1213)
- Add 'home' and 'home-test' options to mycroft-use to simplify backend testing. Also added platform support and extended the 'github' option. (#1182)
Misc
- Wakeword validation, defaulting to "Hey Mycroft" when user-entered settings fail. (#1188)
- Add event scheduler tests (#1189)
- Reduced requirements.txt to only the packages actually used by mycroft-core, removing those only needed for default skills. (#1192, #1215, #1216)
- Added stop() to the AudioService. Thanks, @akailash! (#1194)
- Configuration system fix (#1196)
- Padations 0.3.7, fixing several minor bugs (#1198)
- The remote configuration file was prematurely loaded at import time. Now it is loaded when the Session is created. (#1204)
New Voice, moved default-skills to repo
New Voice!
The long-awaited new feminine voice for Mycroft is now available! Members at home.mycroft.ai can choose the 'American Female' voice at https://home.mycroft.ai/#/setting/basic. The Alan Pope voice still is and always will be available for all. (#1173)
Default skills...redefined
The core default skills are now defined by a list on the mycroft-skills repo (see https://github.com/MycroftAI/mycroft-skills/blob/master/DEFAULT-SKILLS). This decouples the list from a specific build, allowing new defaults to be added at any time. Additionally, platforms can also have unique defaults -- for example allowing a KDE installation of Mycroft to pull down KDE/desktop related skills (see https://github.com/MycroftAI/mycroft-skills/blob/master/DEFAULT-SKILLS.kde). The current list of platforms is 'picroft', 'mark-1' and 'kde'.
The list of default skills is defined by the community run Mycroft Skills Team.
Portuguese Internationalization
Fixes
- The Chromecast audio backend would stop playback on initial connection, sometimes interfering with existing playback. (#1123)
- ISSUE #1141: The TTS audio cache could be cleared before or during playback, occasionally interfering with responses (especially when the disk is nearly full). Also allowed minimum_size not just a minimum percentage, which is less useful when dealing with very large drives. (#1168)
- Upgraded to Padatious 0.3.6, fixing issues with registering entities. (#1149)
- Modified dev_setup.sh build of py2cairo and pygobject to avoid "too many arguments" message on Arch Linux. Thanks @darkphoenix! (#1157)
- The next spoken utterance was consumed if no speech was occurring when mycroft.audio.stop_speaking() was called. (#1167)
- Error messages were spoken during skill download even when "speak=False" was specified (#1183)
Misc
- Major refactor of the mycroft.configuration module. This clarifies and simplifies some of the logic and allows patches to survive a reload of the config. (#1110, #1176, #1179)
- Allow msm.sh, mycroft-start.sh and mycroft-stop.sh to be invoked from different working directories. Thanks @roadriverrail! (#1021)
- Added g++ to dev_setup.sh dependencies (#1150)
- Reduced some of the 'noise' in the logs. (#1180)
- Disabled experimental "Location" context from the default. It was lingering and causing confusion at times, but is still available for more experimentation. (#1181)
- In the 'mycroft-use' utility, separated the connection between the mycroft-core implementation and the backend. Now specifying 'stable' and 'unstable' only changes the Debian package. To change the backend connection, specify 'home' or 'home-test' in a subsequent call, e.g. "mycroft-use unstable" followed by "mycroft-use home-test".
Automation test
This "release" was a test of a new automated release management system with no actual code changes. v0.9.2 and v0.9.3 can be ignored.
MSM messagebus notifications; Skill Settings metadata auto-update
This release is mainly minor bugfixes for the Alpha release, covering all the major supported platforms (Mark 1, Picroft, Debian/Ubuntu).
Skill Management rework and MSM notifications (#1152, #1155, #1161)
The Mycroft Skill Manager (MSM) and internal skill management were significantly reworked to interact cleanly. Previously the automatic reloading of skills could be triggered and break during the installation of the PIP dependencies for a new skill, requiring a reboot to fix.
MSM now posts the following to the messagebus during the skill install/update/removal process:
msm.updating
msm.installing
msm.install.succeeded { "skill" : name }
msm.install.failed { "skill" : name, "error" : code }
msm.installed
msm.updated
msm.removing
msm.remove.succeeded { "skill" : name }
msm.remove.failed { "skill" : name, "error" : code }
msm.removed
An update can be forced by posting skillmanager.update
to the messagebus.
This also adds a module method for posting messages from the command line. It can be invoked via:
python -m mycroft.messagebus.send mycroft.wifi.start
python -m mycroft.messagebus.send speak '{"utterance":"hello"}'
Skill Settings metadata auto-update (#1151)
Recent builds added the ability for a skill to describe a user interface, allowing the skill user to enter options and preferences via the home.mycroft.ai web interface. This has been enhanced to automatically update the web interface when a skill writer modifies the settingsmeta.json file, such as during development.
FIXES
- ISSUE #967 - Fix the "rolling eyes syndrome" where a Mark 1 never appears ready after the boot sequence completes. (#1160)
- Skill reloading could be triggered unexpectedly in certain cases (#1162)
- Requests to stop speaking are handled more gracefully and effectively (#1142)
- Made new LOG mechanism compatible with more Python IDEs (#1120)
- Corrected typos in the README. Thanks @apachelogger! (#1126)
Misc
- Support for https sources in the Audio Service. Thanks @roadriverrail! (#1169)
- Fixed microphone listener reads when no sound chunks are available. (#1159. #1165, #1166)
- Protection for None values in settings (#1154)
- Connected device core and enclosure version information is sent to backend when connecting (#1147)
- DuckDuckGo added as a default fallback handler (#1129)
- Updated to Padatious 0.3.4 -- support for empty containers (#1132, #1133)
17.08a - The mycroft-core "alpha" release!
We have hit the milestone of our "alpha" version. What does this mean? We will be guaranteeing support for the APIs in this version going forward. Over the next 6 months we may enhance APIs, but all changes will be backwards-compatible until we move on to the 18.02b beta.
Apache 2.0 License (#1128)
This release includes a small but very important change to mycroft-core. It is now under Apache 2.0 licensing instead of GPLv3. This means Mycroft can be used in any application, including some which were previously not possible due to strong regulatory requirements such as medical and automotive use.
As before, all who wish to join in developing this technology are welcome. Contributors who have signed our Contributor Licensing Agreement can be found at https://github.com/MycroftAI/contributors. Thank you to everyone who has helped us reach this milestone!
The Open Dataset (#1127)
In 0.8.22 we added the ability for users to select LEARN on Mark 1 devices to choose to contribute recordings of their device activations to reduce false-positives (inadvertent activations) and false negatives (missed activations). Now all users can choose to Opt-In to be part of the Mycroft Open Dataset and share some of their data to help us improve this technology.
All who Opt-In under their basic settings at https://home.mycroft.ai/#/setting/basic can later choose to Opt-Out, stopping not only future data contributions but also removing any previously contributed data from future training sessions. We appreciate the help of all in building an AI for Everyone!
Padatious update to 0.3.2 (#1125)
Padatious -- our example-based intent parser -- now supports defining named entities, intent expansion, and numeric matching. See https://github.com/MycroftAI/padatious#readme for more details.
Script simplifications (#1107)
Rework of the the mechanisms used to interact with Mycroft. The old mycroft.sh utilized the 'screen' command, but now with the CLI it is easier to view unified log files. Plus there was confusion over when to use start.sh and when to use mycroft.sh.
Now things are wrapped in the simple and easily discoverable scripts:
- start-mycroft.sh
- stop-mycroft.sh
The start-mycroft.sh allows you to start the background services and to invoke the various tools (e.g. the CLI, unit tests, etc).
FIXES
- ISSUE #1105 - Custom activation phrases were not working (#1106)
- Fix for methods using multiple decorators (#1117)
- ConfigurationManager saves could wipe out previously saved configs in certain cases (#1119)
- Fix event cancel/update. Also prune repeating and empty events needed before serialization. (#1114)
- Corrected typo in msm documentation (#1098)
Misc
- Began Dutch translation. Thanks, @valdr! (#1092)
- Add notification of start/stop recording to the audio_test utility (#1130)
- Notifications are now issued at before and after fallback handling. These are "mycroft.skill.handler.start" and "mycroft.skill.handler.complete", with "fallback_handler" as the data. (#1108)
- Implemented LOG class in mycroft.util.log, eliminating the need to call
getLogger(__name__)
at the top of each file. - Added '--allow-root' flag to dev_setup.sh. Also added help message. (#1115)
- Extracted wifi-setup from mycroft-core, as it is not needed in all use cases. It is now an independent project, https://github.com/MycroftAI/mycroft-wifi-setup. (#1118)