🎉 ovos-core exists now!
Configuration
- audio backends deactivated by default if not present in config ec8ac01
- optional ntp sync 62f322d
- offline support (do not wait for internet to load skills) 6160306
- optional msm e0b2ffe
- optional backend fd9a01c
- tts cache
min_free_percent
is now configurable (per TTS engine) a07378c - dedicated bus connection per skill 1f4fe33
- instant_listen 127dad4
- experimental config option to not require the pause between "hey mycroft" and actually issuing an order
- skill permissions - initial experiments a169ad8
- converse handling
- skill whitelist/blacklist mode - restrict converse to certain skill_ids
- configurable converse timeout
- can be set globally and per skill
- initial concept of converse priority, needs to be set per skill in .conf
- converse activations
- skill whitelist/blacklist mode - restrict converse (de)activation to certain skill_ids
- cross (de)activation setting - only skills can (de)activate themselves
- configurable max consecutive number of skill activations (per minute)
- can be set globally and per skill
- fallback handling
- skill whitelist/blacklist mode (restrict fallbacks to certain skill_ids)
- fallback skill priority override (user defines fallback order)
- no fallback priority limit (can go above 100 now)
- converse handling
Features
- skills full XDG support aaa159a
- will load skills from all XDG dirs, skills are considered data, not code
- the "classic" skills folder is loaded last and has the highest priority, this ensures backwards compatibility
- skill_ids need to be unique and correspond to the skill folder name, by convention repo.author
- skills in higher priority directories replace skills with same skill_id in previous directories (no duplicate skill loading)
- empty folders are assumed to mean the skill should not be loaded, ie, a user can disable a system skill without uninstalling or messing with .conf
- if a new skill is detected and a loaded skill exists with same id, the loaded skill will be unloaded (assuming the new skill is in higher priority directory)
- audio service support for media player seek bar 8d881f5
- get_track_length
- set_playback_time
- get_playback_time
- all methods now support timedelta objects
- new messagebus api to clear config cache (force a reload on
Configuration.get()
) 434da34 - add phonetic spellings for
ip
andwikipedia
to help TTS say it right 41bec48 - allow all TTS engines to have a persistent cache (creation of the cache is out of scope) 6b86f00
- used to be mimic2 exclusive functionality
- active skill events - enhanced version of mycroft-core/pull/1468
- adds
self.activate()
andself.deactivate()
in MycroftSkill class - adds "intent.service.skills.deactivated" event when IntentService removes a skill from active list
- adds "intent.service.skills.activated" event when IntentService adds a skill to active list
- adds
def handle_deactivate(self, message):
callback in MycroftSkill class - adds
def handle_activate(self, message):
callback in MycroftSkill class
- adds
Language support
- fix pairing (replace hardcoded english utterance with bus event) cf4e994
- fix locale switching + timezone handling f0b07d9
- all individual services setup the locale (timezone + default lang) on loading, this means not-skills-service (eg. a TTS engine) using lingua_franca will have the correct locale
- timezone conversion utilities made wrong assumptions about UTC and naive datetimes
- ⚠️ bug still present in lingua_franca MycroftAI/lingua-franca#209
- recommended that you import the time utilities from
mycroft.util.time
- if running under mycroft-core or using lingua_franca you get wrong timezones, if running under ovos-core you get the fix
- recommended that you import the time utilities from
- flexible lang dialect support f002001
- when loading resources check for all language code variations and returns best
- changing language to en-gb should load british dialect variations if available, but en-us should still be used if en-gb missing
- keep original message.data in intents b175e4e
- intent handlers now get the same info that
converse
does + intent data - helps with language support, where language can come from STT/wakeword/config
- intent handlers now get the same info that
- add multi lingual support 7e43162
- every bus message can now request/inform about a specific language
- Wakeword/STT can detect language
- Hivemind voice satellite can send it's own language
- introduce the concept of
secondary_languages
- load resources and intents for all configured languages
- every bus message can now request/inform about a specific language
- skills self.lang is now session based instead of loaded once from .conf c967826
- intent engine per language 8c96e5e
- Improves accuracy since only lang specific intents are taken into account now
- make the dialog_renderer load lang resources on demand
- Remove fallback to en-us for missing resource files
HiveMind support
- the whole language support section is relevant to hivemind, scroll up if you didn't read it!
- make audio service respect target/destination in message.context c100394
- ensure usage of .forward and .reply methods 26aaadc
- covers skills / intents / scheduled events
- skill_id is now always included in message.context
Bug fixes
- refactor/readiness+enclosure 847e822
- the generic enclosure partially handled some onboarding functions that dont belong there
- completely remove mk1 specific code to mk1 enclosure class (was duplicated)
- move readiness check from enclosure to skills service (enclosure is optional)
- make readiness conditions configurable to account for headless installs and other setup specific considerations
- hotfixes: 9257bc9
- dont raise exception on directory creation error
- hotfix/phoneme_bug
- fix/signal_remove_race_condition
- make merge_dict return the modified dict for convenience (sync with ovos_utils)
- handle missing dialogs in get_response method fa40029
- fix process_status report ready at correct time 758ce53
- support optional stt credentials (google works with None) 5d2307a
- make mycorft.conf priority skill list use deterministic skill_id instead of skill name 58427c1
- fix stop handling cfc5fb6
- if skill failed to load stop was called and could throw an exception (skill not fully initialized!)
- if stop took more than 100ms it was assumed to be handled and a message was wrongly sent
- remove tts audio extension assumptions, determine extension on the fly a07378c
- ipc signal permissions c1ff029
- ensure reload_skill flag is respected 7e440b0
- this probably wasn't happening in the wild at all, refactored while searching for a related bug
- it is still important for derivative projects importing mycroft as a lib
- allow event_scheduler to run as a daemon c1ce28f
- fix skill shutdown sequence, order of operations was not safe befbc55
- gui dicts would not sync on subdict changes (missing data in mycroft-gui) fc0e9f4
- handle unimportant .conf default values missing 16b41e9
- disable debug mode in tornado 439cf7e
- ensure logger is always fully constructed (circular imports monkey business going on) c92d584
- fix/handle gui api trying to emit messages without self.bus 7313135
- this should avoid most of the error logs during skill shutdown and reload
- fix unmunge message issue 3c752e2
- the Message object can come from mycroft or from the bus client package, this caused type check issues
- fix/ensure lang is always lowercased eebbb17
- fix/race condition dictionary changed iteration 47d8a1f
Packaging
- turn mycroft-core into a proper python library instead of a standalone application 9257bc9
- replace all relative imports with explicit imports
- move audioservice from skills to audio module to decouple the individual modules
- remove expand_parentheses import (dead code) from mycroft.util.format
- remove all non-package files
- split requirements.txt into individual files per service
- gTTS optional import -> throw import error only if google selected
- petact optional import -> throw import error only if precise selected
- adapt optional import -> no longer required by top-level mycroft import, only by skills service
- do not require pyaudio just to import mycroft.util.audio_utils -> throw error if search for input device is used
- extract bracket_expansion.py from padatious.util
- rebranding
- change platform to "OpenVoiceOS"
- add "(OpenVoiceOS)" to version string
- remove support for the version.json file (mk1 specific)
- reset version to 0.0.1
- optional_padatious d59dc53
- loosen requirements aabd1c0
- do not bundle the english pocketsphinx model twice 3506ecd
- support websocket-client >= 1.2.1 f5d3b5b
- lingua_franca optional f0b07d9
- only needed if using the utilities directly (throws ImportError on usage)
- only required by individual skills, they should list it in requirements.txt
- add optional ovos.conf 4a8317f
- example usage https://github.com/OpenVoiceOS/ovos-core/blob/dev/mycroft/configuration/ovos.py
- allow setting name of base XDG folder (rename "mycroft")
- enable/disable XDG compliance - mycroft is not (fully) compliant
- allow setting location of the default config and name of .conf files
- configure per downstream project
- multiple "cores" can co exist now, each with it's own skills folder and config files
- cores are detected via presence of preconfigured list of module names
- refactor/allow overriding stt engine in constructor de681fe
- for downstream projects wanting to use speech client but not STTFactory
Post release notes
this is the same as version 0.0.1
the github release accidentally included 2 extra commits not in 0.0.1 that is published in pypi, this release drops those 2 extra commits
Related issues
Companion issues/PRs in mycroft-core: