Skip to content

RinaAssistant v2.5.0 — Multi updates

Choose a tag to compare

@Luna-coreX Luna-coreX released this 17 Aug 01:49
· 363 commits to main since this release
0bd10f1

[2.5.0] — 2026-08

Added

  • Ukrainian, Spanish and German interface languages. The localisation
    engine now supports any number of languages instead of just Russian and
    English. The core interface — navigation, page and section titles, buttons,
    setting names, and the most frequent assistant replies — is translated;
    anything not yet covered falls back to the original Russian rather than to
    an invented machine translation.
  • A translation-coverage note under the language selector, e.g. "About 17%
    of the interface is translated — the rest is shown in Russian." Choosing a
    language should not promise more than it delivers.

Changed

  • Speech-recognition language now follows the interface language for all five
    languages, not only Russian and English.

[2.4.0] — 2026-08

Added

  • Wake-word sensitivity slider. How closely a spoken word must match the
    wake word was previously fixed in code; the right value depends on the
    microphone and the recognition engine. The setting is clamped to 0.5–0.98 —
    below that almost anything matches, above it almost nothing does.
  • Recording length setting (3–20 seconds). Rina previously always listened
    for exactly eight seconds after the hotkey.
  • "Check models" button for the Vosk and Piper model paths. Picking the
    wrong folder is easy, and until now it only surfaced later as an
    unhelpful recognition error. The check also recognises the most common
    mistake — pointing one level above the real model — and says so:
    "The model seems to be inside: model-ru".

Fixed

  • A misleading comment in the wake-word matcher claimed the 0.8 threshold
    matched heavily distorted variants. The measured similarity is 0.5 for those
    and 0.75–0.89 for realistic ones; the documented example now matches reality.

[2.3.0] — 2026-08

Added

  • Installing plugins from a folder or a .zip archive, straight from the
    Plugins tab. The contents are validated before anything is copied — manifest
    present, main.py present, plugin.json readable and carrying an id — so a
    wrong pick cannot leave debris that reports itself as a broken plugin on
    every launch. Archives that wrap the plugin in a single nested folder are
    handled, and installing over an existing plugin updates it.
  • Richer declarative plugin pages (API v2). Alongside Title, Text,
    Note, Items, Button and Divider, plugins can now describe:
    Input (a text field whose value is passed to on_action), Table (rows
    with optional headers), Progress (a 0…1 bar), and Badge (a small status
    label). Pages remain plain data and still serialise to JSON, so plugins stay
    independent of the UI framework.

Changed

  • on_action(action, value) now receives a value, which is what makes input
    fields possible.

[2.2.0] — 2026-08

Added

  • Export and import of commands. Move your commands to another computer or
    keep a backup. The file carries a format version and a type, so an import
    can tell a commands file from a history file and refuses the wrong one with
    a clear reason rather than silently doing nothing.
  • History search — filter the log as you type; the counter and the empty
    state follow the query ("No entries match …").
  • History export to readable text (grouped by day, with times and
    speakers) or to JSON.

Changed

  • Importing commands adds to what you have instead of replacing it, and
    duplicates are detected by trigger phrases rather than by id — an id from
    another machine means nothing, but the phrases are what a command actually
    is to you. Imported commands get fresh ids so they cannot collide with
    local ones.

[2.1.0] — 2026-08

Added

  • Timers, alarms and reminders. "Set a timer for ten minutes", "remind me
    in half an hour to call mum", "remind me at 15:00 to call the doctor",
    "wake me at 7:30". Durations are understood as digits or words, including
    "half an hour" and "an hour and a half", and absolute times resolve to the
    next occurrence (tomorrow if the time has already passed today).
  • Asking about and cancelling what is scheduled by voice: "what timers do
    I have", "cancel all timers".
  • A Reminders tab listing everything scheduled with a live countdown,
    cancelling one or all, and a small form for adding a reminder by hand when
    speaking is inconvenient.
  • Scheduled items are stored on disk and survive a restart — a reminder
    that disappears when the app closes cannot be trusted.

Fixed

  • tr() raised a TypeError for any string containing a {text}
    placeholder, because the name collided with the translation function's own
    first argument. The parameter was renamed so this class of failure cannot
    recur.