0.1.5 (Mar 10, 2021)
Increase the default wav2letter speech timeout from 150ms to 300ms. This means Talon will respond to commands slightly more slowly, in exchange for more reliable speech recognition for longer commands and dictation. You can restore the old behavior by adding settings(): speech.timeout = 0.150
to any global .talon
file.
Improve Talon startup time.
- Improve DFA minimization time.
- Improve error and watchdog tracebacks.
- Improve handling of eye tracking errors and calibration screen.
- Add new
app.register("ready", cb)
event, which functions like app.register("launch", cb)
. However, unlike the launch
event, ready
will also be called immediately at registration time if Talon was ready.
- Update Skia, and improve Skia <--> numpy interoperability.
- "View Log" now shows the entire log from the current Talon run.
- Fix a race condition in cron.
- Fix clipboard mode support (e.g. "find" clipboard on Mac and "select" clipboard on Linux).
- Eye Tracking (Control Mouse): reset mouse movement timer when eye tracking is enabled.
speech.record_all
: don't record when Talon is asleep.
- Linux: Fix error when launching Talon under a virtualenv.
- Windows: Code sign all EXE and DLL files (instead of just signing the main exe).
- Windows: Rework key codes to fix #243 and #188
- Mac: Improve
canvas.focused = True
behavior.
- Mac: Fix cmd modifier when used with accent keys (like ^ and ~)
- Mac: Optimize UI enumeration time on Talon startup.
- Mac: Add a Metal renderer for Canvas (which was 3x faster than OpenGL in simple tests).
REPL improvements:
- Tab completion should now work in more cases.
- Fix text offset issues when you press Up to go through history on a freshly loaded REPL.
- Handle KeyboardInterrupt while connecting.
- Mac: Pressing tab on an empty line should now indent without a 1-keystroke delay.
Resolved GitHub issues:
0.1.4 (Jan 6, 2021)
- Improve "Control Mouse" mode. It should now be usable on the Tobii 5. More improvements to come.
- Refactored all
Rect
and Point2d
types to live in talon.types
, e.g. from talon.types import Rect, Point2d
. This means rect.contains()
and rect.center
now use and support Point2d
values, and ui.Rect is skia.Rect
now.
speech.record_all = 1
now writes microphone name and spoken text to the file as FLAC comments, and better handles very long file paths.
- Fix imgui flicker on show.
Resolved GitHub issues:
0.1.3 (Dec 25, 2020)
Added:
- Talon now uses Python 3.9.1.
- Talon is now a Universal 2 App on macOS, with native Apple Silicon support.
- Dragon recording is now supported with
speech.record_all = 1
- Added macOS engine for Dictation Mode (early-access beta only).
- Added Vosk engine for Dictation Mode (early-access beta only).
Added actions:
core.repeat_partial_phrase()
action.
core.cancel_phrase__unstable()
action.
speech.set_microphone(name: str)
action.
Improved:
- Deprecation warnings are now turned on for Python.
- Documentation and error message updates.
- clip.capture(): s.get() will now throw an error if incorrectly called before block exits.
- .talon files can now use consecutive
and
on identical match keys like mode and tag.
actions.next()
now works if the next action in the chain is Module-implemented
- TalonScript format strings are now properly type checked.
- TalonScript errors have been improved, which includes the path and line number of the erroring script.
- Add a check preventing rules (captures or commands) from being "completely optional". Parsing for such rules was already broken, so now there is a check preventing you from creating them.
This means a capture such as
@ctx.capture(rule="[word]")
will no longer be allowed. The check also prevents [optional]: "hello"
in a .talon file, which would have been a very bad idea but was previously possible.
- Change the
app.exe
scope to match just the basename of the exe, and add app.exe_path
to match the full exe path.
- Fix issues related to editing engines.py without restarting Talon.
- General parser reliability and performance improvements.
- General imgui improvements.
- Dragon word parsing improvements.
Optimizations:
- Optimize a quadratic rule parsing case, which should improve the performance of numbers in knausj.
- The Python interpreter lock was not being released during list DFA minimization, which may have affected eye tracking latency. The GIL is now released during all DFA minimization steps.
- Do even less work when updating
Context.lists
and the underlying list hasn't changed.
- Implement differential context refresh. This is a significant optimization for the "context refresh" path. This means much less work is performed every time you switch apps, update a list, reload a Talon/Python file, and more.
- record.py is no longer slow for very large recordings/ folders.
Removed:
- Remove unused properties of
Context
, such as wrapper actions.
- Remove
Context
getters/setters. You are intended to use the property directly, for example: ctx.settings_set(value)
should instead be ctx.settings = value
.
- Remove
Context.defines
as well as commands
and hotkeys
(these were intended as a private API - instead use .talon
files to declare commands and hotkeys).
- Context.reload() is now a private API. With the differential context refresh feature, asking Talon to manually reload a context would have no effect.
- Remove some legacy "core" prefixed actions.
- Remove implicit Capture sharing. Only one instance of a capture is now active at a time.
- Remove inner context list mutation, such as
ctx.lists[name][key] = value
and ctx.lists[name].update({'key': 'value'})
, because it never worked properly. It now throws TypeError: Cannot mutate word lists.
Windows:
- Fix window rect coordinates.
- Add support for window resize/movement API.
macOS:
- Change Canvas window level.
- Fix some event tap issues.
Resolved these GitHub issues:
0.1.2 (Sep 23, 2020)
- Add global
<digit_string>
capture definition (#124)
- Fix updater on bad internet connections.
- Fix View Log tailing beta.log instead of talon.log (#126)
- Fix a list parsing bug (#125)
0.1.1 (Sep 22, 2020)
- Fix canvas scale when dragging between monitors (#92)
- Fix incorrectly lowercasing
<phrase>
.
- Improve context matching priority for the
os
match.
0.1.0 (Sep 20, 2020)
- Cross-platform (macOS/Windows/Linux) public release of Talon.
- Works with the integrated wav2letter speech engine as well as Dragon.
- Supports the Tobii 4C eye tracker, and has preliminary support for the Tobii 5.
- See the Documentation for getting started information.
- Join the Slack for help and general discussion.
- Report issues here talonvoice/talon or ask about them on Slack in the #help channel.
- To use speech recognition, you need to put user scripts such as knausj_talon in your
~/.talon/user
directory, and to set up wav2letter. Instructions for both of these can be found in the Documentation, and further information can be found on the Community Wiki.
Notes for existing Beta users:
- This release does not yet support sconv models, such as sconv-b5.
- This release does not yet support the WebSpeech engine.
- You will need to stay on the Beta for now to maintain support for those features.
Notes for existing Legacy (v0.0.8.42) users:
- Talon v0.0.8.42 will continue to work if you don't want to update.
- v0.0.8.42 will not automatically update to v0.1.0. You must download v0.1.0 from the website and plan to adapt your user configuration if you want to update. The new API is not compatible with scripts written for the old API.
- If you were using Talon v0.0.8.42 on Mac, you will need to back up your
~/.talon/user/
directory and either start fresh with knausj_talon or manually port your commands.
- There is no automatic command porting system to move from (v0.0.8.42) to (0.1.0) right now. We will consider making one if enough people ask for it on Slack.
- See the Unofficial Docs for information on the new .talon files for defining voice commands.
0.0.1 - 0.0.8.42 and beta versions (2017-2020)
- This is a historical note.
- The earlier Talon release notes have been removed as they were long and no longer relevant.
- Talon was previously not cross-platform, didn't have .talon files, and didn't have the wav2letter speech engine.