VAF v0.1.0a16
Pre-release
Pre-release
·
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.)