Skip to content

RinaAssistant v2.0.0 — First Global Update

Choose a tag to compare

@Luna-coreX Luna-coreX released this 03 Aug 10:15
· 361 commits to main since this release
cf4de97

[2.0.0] — 2026-08

Rina now knows what is installed on your computer. Launching a program no
longer requires adding it by hand: say its name and she finds it, asks which
one you meant when several match, and remembers your answer.

Added

  • Program discovery. Rina indexes what is installed on the machine —
    Start Menu shortcuts, Microsoft Store apps, desktop shortcuts, and
    executables on PATH — so "запусти телеграм" works without any setup.
    Names spoken in Russian resolve to Latin-named programs through
    transliteration and a table of common spoken names ("стим" → Steam,
    "ворд" → Word, "обс" → OBS Studio). "Запусти браузер" launches whichever
    browser is actually installed. The index is cached (a full scan takes about
    a second, a cached read four milliseconds) and refreshes in the background.
  • Folders with portable programs (Settings → Программы). Programs that are
    simply unpacked into a folder have no Start Menu entry and no registry
    record — point Rina at the folder and she will find them. Bundled runtimes
    and helper executables are filtered out, so a Ren'Py SDK folder contributes
    renpy.exe and not the five other .exe files shipped inside it.
  • Teaching Rina a program. When nothing matches, Rina offers to be shown
    the file once and remembers it permanently. Remembered programs are listed
    in the Commands tab and can be removed individually.
  • Clarifying questions. When several programs match, Rina asks instead of
    guessing — "Нашла несколько: Visual Studio 2022, Visual Studio Code…" — and
    accepts "второй", a name, or "отмена". The answer is remembered, so the
    same phrase launches straight away next time.
  • System and media control: volume, mute, play/pause, next/previous track,
    screenshot, lock. Shutdown, restart and sleep are available too, but always
    require confirmation.
  • Sequence step "Пауза" — a delay between steps, so a scenario can wait for
    a program to start before the next step runs.
  • Plugin API v3: declarative pages. A plugin now describes its tab as data
    (Title, Text, Note, Items, Button, Divider) and the application
    renders it. Plugins no longer import Qt, so they will survive a change of UI
    framework, and a page can be serialized to JSON for a non-Python shell.
    The bundled Notes plugin was rewritten as the reference implementation.
  • Config schema versioning with automatic migration, including a one-time
    backup of the previous configuration before the first migration.

Changed

  • Creating a command no longer asks for a file path. The "Программа" type
    offers autocomplete over the programs Rina found; browsing for a file is
    still available for anything not in the index. Store apps are supported as
    command targets, and editing a command shows the program's name rather than
    its application identifier.
  • Sequences were reworked the same way: program steps use the picker, and
    the action step grew from five window-only actions to sixteen, covering
    volume, playback, screenshot, lock and power.
  • Duplicate trigger phrases are now refused with an explanation. Previously
    two commands could share a phrase, only the first ever ran, and there was no
    way to tell why the second was silent.
  • Commands containing shutdown, restart or sleep — directly or in a step —
    ask for confirmation before running.
  • Sequences run in a background thread, so a pause no longer freezes the window.
  • The hard-coded catalogue of five launchable programs is gone; it remains only
    as a fallback on systems without an index.
  • The Commands tab now also shows what Rina found, with a refresh button.

Fixed

  • Programs with Russian names could not be launched at all. PowerShell
    returns its output in the console codepage, not UTF-8, so 62 system apps —
    "Блокнот", "Диспетчер задач", "Калькулятор" — were read as mangled text and
    never matched anything.
  • Window actions were executed from the wrong thread. Commands run in the
    speech-recognition thread and called window methods directly; they are now
    routed to the GUI thread through a signal.
  • Enabling any plugin that declares settings crashed the application — the
    plugin settings panel still used the old row signature after the 1.2.0
    interface rework.

Notes for plugin authors

create_page() returning a QWidget still works, but it is deprecated: it ties
a plugin to Qt. Implement page() (see plugins/page_spec.py) and handle
button presses in on_action(). If both are defined, page() wins.

Upgrading

Configuration is migrated automatically on first launch. Custom commands,
history, plugins and their settings are preserved, and a copy of the previous
configuration is written to backup-v0/ next to the config files
(%APPDATA%\RinaAssistant\) in case you need to go back.