Skip to content

Keystroke 1.2.1

Choose a tag to compare

@evindor evindor released this 09 Sep 20:11
· 145 commits to main since this release

Keystroke 1.2.1

Released September 9, 2026.

A hotfix for Omarchy 4.0.3: applications are listed again, and the hotkey's
second tap starts dictation instead of closing the palette. 1.2.0 is unaffected
in every other respect, and nothing else changed.

Fixes

  • Applications are listed again on Omarchy 4.0.3. 4.0.3 hands a plugin panel
    a manifest whose kinds is a QML sequence rather than an array. The shell's
    own Array.isArray check rejects it, so it withholds the shared application
    library and then, a second after startup, destroys the palette's scoped shell
    because it recomputes that plugin's capability profile from the registry
    manifest and sees a different answer. The palette now keeps serving
    applications from Omarchy's own AppLibrary component once that happens, with
    the same desktop-entry filtering, icons, launch behaviour and removal. On
    4.0.2 the shared library is still preferred and nothing changes.
  • The hotkey's second tap starts dictation. The palette is keepLoaded
    again, so the shell no longer unloads it a tick after the tap that starts
    recording. Second tap in Settings › Voice behaves as documented.

Update

omarchy plugin update evindor.keystroke

If the shell still uses cached plugin code after updating, run
omarchy restart shell.

Requires Omarchy 4.0.2 or later.

Still outstanding on 4.0.3, and only fixable upstream: once the scoped shell is
revoked, services provided by extension plugins are no longer reachable, and
extensions receive a null shell. manifestHasKind needs to accept a QML
sequence, not only a JavaScript array.

Validation: 148 QML tests, 48 time-zone cases, the application check (extended
to cover the revocation, and failing against the previous component), the file,
catalog, matching worker, engine and session checks, the palette matching,
shortcut, motion and dictation checks, the voice, clipboard, Codex and hotkey
checks, plugin validation, site checks and qmllint passed offscreen. The
extension lifecycle check stops at the same "update applied" race recorded for
1.2.0. Verified live on Omarchy 4.0.3-1: the palette lists all 73 applications
after the scoped shell is revoked. See the verification record.

Full changes