Skip to content

VAF v0.1.0a16

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 19 Jul 18:04
· 319 commits to main since this release

Added

  • The agent recovers when a call misreads your voice, instead of ignoring you. In a
    room with other people, the voice check can briefly lose track of who is the owner (a
    guest speaking resets the in-call "this is the owner" bridge), and your own short command
    could be treated as a stranger's and silently dropped. Now, when a voice it cannot place
    is clearly talking TO the agent, it asks "did you mean me?" in the language being spoken;
    if your reply confirms your voice, it picks straight back up (and carries out what you
    asked). It never just goes quiet on your answer: if you say yes but it still cannot place
    your voice, it says so and asks you to confirm on screen or via your messenger so it can
    learn your voice and misread you less often. It never acts on an unconfirmed voice,
    and your voice profile is only ever updated from a confirmation you make yourself. The
    agent also no longer goes silent on a turn that was clearly addressed to it, and you can
    arm "talk to the other person" with a plain spoken command even when the local model is
    being unreliable.
  • In a voice call you can now ask the agent to talk to the other person with you. By
    default the agent overhears the people around you and stays quiet, which is right when
    you are just talking to someone else. When you actually want it to take part - "answer
    her", "talk to my mother, she is asking you something" - it now does: it starts replying
    to the guest directly IN THEIR OWN LANGUAGE (even if your call started in another), and
    greets them. While it is talking with the guest it now follows the actual back-and-forth
    in the room - it is given the shared, spoken-aloud conversation (everyone's turns, in
    order, in whatever languages are spoken) so it can hold a real multi-person conversation
    instead of replying to each line in isolation; the guest still never sees your private
    information, only what was said out loud after you brought them in. It stays in that mode
    until you tell it you are done ("thanks, that's all"), the conversation goes quiet for a
    while, or the call ends.
  • The voice agent no longer refuses to speak a language it actually knows. On a call it
    now replies in the language it is being spoken to, or the language you ask it to use,
    instead of being pinned to one language by its instructions - so asking it to talk to
    someone in another language works, rather than getting "I'm not fluent in that." Throughout, the guest can only be spoken to - the agent never shares your
    private information and never runs an action on a guest's request. On a call with more
    than one person the agent is also given the situation (who is present and the language
    being spoken) so it responds more naturally.
  • In a voice call, the agent now understands your answer to its own question. When it
    asks you something, your next reply is treated as the answer even if it is brief ("yes",
    "at three"), instead of a stray remark; if you ask it to repeat, it re-asks the same
    question in your language. It is aware of the room: one-on-one it takes your reply
    directly; with other people around, a brief reply still counts, but a longer one is only
    treated as your answer when it is on-topic, so it does not mistake side-talk for an
    answer. Someone else can get a brief spoken reply when they say something clearly
    on-topic, but their words are never taken as your answer and can never trigger an action.

Changed

  • Choosing the live-call voice model is now a dropdown, not a text field. For a
    dedicated local model you pick from your already-downloaded models (the recommended
    Gemma 4 E4B is always offered and is fetched automatically when you select it); for an
    API provider you pick from that provider's models, with a refresh button to pull the
    live list, instead of typing a name by hand. Downloading local models stays in the AI &
    Model settings, and a value saved by an earlier version keeps working.
  • The agent stops asking "was that you?" on every unrecognized voice. The speaker
    confirmation now fires in two more targeted cases: promptly when a voice it does not
    recognize CLAIMS to be you ("I'm NAME") - a spoofing check that asks you to confirm -
    and, far more rarely, on a borderline recording of your OWN voice (for the adaptive
    re-recognition). A stranger simply talking near the mic no longer triggers the
    question. The claim detection is multilingual.

Fixed

  • The voice agent no longer speaks a stray fragment of its own reasoning. Two cases are
    now covered: a model's thinking wrapped in a tag is always removed before anything is
    spoken - not only <think> but the variants other models use (<thinking>,
    <reasoning>, <scratchpad>, and more), whether the tag is closed or the stream was cut
    off mid-thought; and when a weak model leaks its thinking as PLAIN text (no tag) starting
    with a connective like "But we need to check: the user might be...", the filter now looks
    past a leading "but/so/and/well/okay" and drops the fragment to a short "say that again"
    instead of reading it aloud.
  • The voice agent recognizes you from the first words of a call. The voice-recognition
    model is now warmed up the moment a call opens, instead of loading lazily on the first
    thing you say. During that cold load you were briefly treated as an unknown speaker -
    formal replies, a needless "did you mean me?", and it staying quiet on side-talk - until
    the model finished loading; now you are placed correctly from the start.
  • The agent no longer reads its own thinking out loud in a voice call. When the local
    model announcing a delegated result leaked its internal reasoning into the text (for
    example while it was stuck), the voice could read that <think> reasoning aloud. It is
    now stripped before anything is spoken or stored, so you only ever hear the actual answer.
  • A voice-call reply in another language is now spoken by that language's voice. When the
    agent answers in a different language than you spoke (e.g. Turkish in a German conversation),
    it uses a matching voice for that language instead of speaking it with your usual voice -
    whenever a voice for that language is available (a downloaded local voice, or any cloud voice
    provider). Otherwise it stays on your call voice.
  • Your spoken language is no longer mis-detected at the start of a voice call. The call
    now tells the speech-to-text service the language from your profile up front, so a short
    first sentence in German is not transcribed as French (or another language) - which had
    the agent constantly asking you to repeat. It still notices if you genuinely switch
    languages mid-call.
  • The agent stops mistaking you for a stranger mid-call on short replies. In a voice
    call, once it has clearly recognized your voice, a brief or noisy follow-up ("ja", "at
    three") no longer flips you to an unknown speaker and locks you out of acting - your
    recognition stays "sticky" for a while after it verifies you. A clearly different voice
    still switches immediately, so it does not weaken the guard against someone else acting
    as you.
  • The local voice model now starts on Apple Silicon Macs. The recommended local
    German voice model (Gemma) could fail to start on macOS/Metal with only "Server failed
    to start" and an empty log. A fallback for the quantized cache existed but never fired:
    the non-debug log level wrote an empty log, hiding the very error the retry looked for.
    The fallback now runs whenever the first start attempt dies and an alternative exists,
    non-debug logging captures fatal errors again, and the retry scans the full log. So an
    empty or low-verbosity log can no longer silently disable it.
  • The one-time "what's new" alpha notice no longer reappears on every Settings close.
    Closing Settings refreshed your time format and name, but also reset the seen-version
    gate, which re-showed the one-time notice each time you left Settings. It now refreshes
    those without touching the gate. (A deeper per-user workspace persistence quirk can
    still surface it once per app start; that root cause is tracked separately.)