Dragonfly

Latest version: v0.6.5

Safety actively analyzes 714860 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 7 of 10

0.15.0

--------------------

Added
~~~~~
* Add new `Kaldi engine`_ backend for Linux & Windows, including
documentation and module loaders (thanks `daanzu`_).
* Add more featureful loader for WSR with sleep/wake functionality
(thanks `daanzu`_).
* Add FuncContext class that determines context activity by callable
argument (thanks `daanzu`_).
* Allow all timer manager callbacks to be manually disabled (used in tests).

Changed
~~~~~~~
* Change RunCommand action to use a member for the process_command argument.
* Change how Sapi5Compiler compiles Impossible elements (more impossible
now).
* Change sphinx engine install instructions and required dependency
versions.
* Change the dragonfly.timer._Timer class so that it works correctly for all
supported engines and platforms via engine.create_timer().
* Make local development documentation use read_the_docs theme (thanks
`daanzu`_).
* Move timer-related engine code into DelegateTimerManagerInterface so it is
re-used by multiple engines.

Deprecated
~~~~~~~~~~
* Deprecate the old dragonfly.timer._Timer class.

Fixed
~~~~~
* Fix SAPI5 engine setting grammars as not exclusive (thanks `daanzu`_).
* Fix SAPI5 window change detection and allow manually processing (thanks
`daanzu`_).
* Fix slow RPC response times for WSR and natlink by adjusting engine timer
intervals.
* Preserve Dragon mic state in the NatlinkEngine.speak() method (thanks
`lexxish`_).

Removed
~~~~~~~
* Remove sphinxwrapper Git sub-module from project.

0.14.1

--------------------

Changed
~~~~~~~
* Change English integers to include "too" and "to" as equivalents for
"two" (thanks `lexxish`_).

0.14.0

--------------------

Added
~~~~~
* Add documentation on dragonfly's logging infrastructure.
* Add dragonfly.rpc sub-package and usage example.
* Add enable() and disable() methods to ThreadedTimerManager class.
* Add optional "repeating" parameter to the multiplexing Timer class and
engine.create_timer() method.
* Add recognize_forever() method to WSR engine class.

Changed
~~~~~~~
* Change AppContext class to allow lists of titles and executables
(thanks `mrob95`_).
* Change WSR engine to call timer functions on the main thread.
* Change dragonfly stdout logging formatter to include the level name.
* Make dragonfly's multiplexing timer classes more thread safe.
* Replace WSR module loader's PumpWaitingMessages loop with
engine.recognize_forever().
* Simplify sphinx engine availability checks.

Fixed
~~~~~
* Fix WSR engine context bug with a hook for foreground window changes
(thanks `tylercal`_).
* Fix a bug with Monitor objects caused by incorrect coordinate calculations
(thanks `tylercal`_).
* Fix some example files that break if used with Python 3.
* Stop calling setup_log() in a few dragonfly modules to avoid side effects.
* Stop encoding to windows-1252 in a few places if using Python 3
(thanks `tylercal`_).
* Stop erasing dragonfly's logging file now that setup_log() isn't always
used.

0.13.0

--------------------

Added
~~~~~
* Add and document optional "remap_data" parameter to Function action to
allow using extras with different names than the function argument names.
* Add Key, Text and Paste action support for X11 and Mac OS using `pynput`_.
* Add modified ContextAction class from `Aenea`_
(thanks `calmofthestorm`_).
* Add more flexible ShortIntegerRef class (thanks `mrob95`_).

Changed
~~~~~~~
* Allow saying "oh" as well as "zero" for IntegerRefs.
* Change the Sphinx engine to disallow multiple grammars with the same name.
* Change the Text action's default pause value to 0.005 seconds & make it
configurable.
* Rename *Language Support* doc page to *Language Support & Sub-package*.
* Rename 3 example command modules to start with underscores.
* Stop mocking Windows-only sendinput classes & functions on other
platforms.
* Update some documentation to mention that dragonfly's module loaders will
load from files matching "_\*.py" rather than "\*.py".

Fixed
~~~~~
* Allow Text sub-classes to override the '_pause_default' attribute.
* Fix Sphinx engine bug where grammar searches could be overridden.
* Fix some issues with dragonfly's mocked actions.

0.12.0

--------------------

Added
~~~~~
* Add *CONTRIBUTING.rst* file.
* Add Repetition 'optimize' parameter that should reduce grammar complexity.
* Add SphinxEngine.default_search_result property.
* Add SphinxEngine.write_transcript_files method.
* Add WSR/SAPI5 retain audio support for saving recognition data
(thanks `daanzu`_).
* Add example *sphinx_wave_transcriber.py* script into *dragonfly/examples*.
* Allow passing keyword arguments to get_engine() functions
(thanks `daanzu`_).

Changed
~~~~~~~
* Change Sphinx and text engines to call notify_recognition() before rule processing.
* Change Sphinx engine to allow specifying default decoder search options
other than "-lm".
* Change SphinxEngine.process_wave_file() method to yield recognised words.
* Change the format of the Sphinx engine's saved training data.
* Disable the Sphinx engine's built-in key phrases if the engine language
isn't English.
* Disable writing Sphinx engine training data to files by default.
* Erase dragonfly's log file when creating the logging handler to avoid
large files.
* Make all Sphinx engine configuration optional.
* Replace Sphinx engine's *PYAUDIO_STREAM_KEYWORD_ARGS* config option with 4
new options.
* Simplify Sphinx engine backend code and improve its performance.
* Update Sphinx engine documentation to reflect the other changes.

Fixed
~~~~~
* Add rule processing error handling to the Sphinx and text engines.
* Fix lots of bugs with the Sphinx engine backend.
* Fix Sphinx engine's support for exclusive grammars and multiplexing
timers.
* Minimise dropped audio frames when recording with the Sphinx engine.

Removed
~~~~~~~
* Remove Sphinx engine's *config.py* file.
* Remove the Sphinx engine's support for Dictation elements for now.
* Remove/hide some unnecessary public SphinxEngine methods and properties.

0.11.1

--------------------

Changed
~~~~~~~
* Change the RunCommand action to allow the *command* argument to be a list
to pass directly to *subprocess.Popen* instead of through *shlex.split()*.

Fixed
~~~~~
* Fix the RunCommand action so it properly parses command strings using
non-POSIX/Windows paths.
* Fix minor issues with RunCommand's string representation and error logging.

Page 7 of 10

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.