Releases: JuiceBoxxGames/utsuwa
Release list
Utsuwa 0.13.3
Desktop builds for macOS, Windows, and Linux.
Downloads
- macOS:
.dmg(universal — Apple Silicon + Intel) - Windows:
.exeinstaller - Linux:
.AppImage,.deb, or.rpm
These builds are unsigned while the desktop app is in beta, so your OS will warn you the first time you open it.
- macOS: right-click the app → Open → Open (or run
xattr -dr com.apple.quarantine /Applications/Utsuwa.app).- Windows: on the SmartScreen prompt, click More info → Run anyway.
See the Desktop Guide for details.
Utsuwa 0.13.2
Fixed
- Your ElevenLabs voice is actually yours now: the custom Voice ID box was saving to a setting the speech pipeline never read, so everyone heard the default voice no matter what they pasted. The field now drives the voice that plays, offers the built-in voices as suggestions, carries over any ID you had already entered, and a wrong ID tells you so instead of quietly falling back. Reported by @Jessika07.
- The TTS model dropdown no longer forgets your selection every time you open the tab.
- Download Save File works in the desktop app: it writes the file straight into your Downloads folder and shows you the filename. A brand-new profile also could not export at all, on web or desktop; that is fixed too.
Full changelog: https://github.com/The-Lab-by-Ordinary-Company/utsuwa/blob/main/CHANGELOG.md
Utsuwa 0.13.1
Added
- Design your OmniVoice voice: OmniVoice grew a proper settings panel. Pick a language and a preset voice side by side, or describe the voice you want by gender, age, pitch, and accent and let it build one. Sliders for speed and synthesis quality, a Test button that speaks a phrase in the active language, and a Regenerate button when a voice drifts and you want a fresh one. Voices now keep a persistent profile, so the speaker sounds like the same person from sentence to sentence instead of shifting between takes. You can also clone a voice from a few seconds of reference audio, manage your clones, and switch between synthetic and cloned modes. Contributed by @dezihh.
Fixed
- She speaks on iPhones again: iOS Safari requires audio to start inside your tap, and her voice arrived just late enough to be refused, silently. The audio pipeline now unlocks the moment you hit send, so TTS works on iOS for every provider. One thing the fix cannot do: if the ring/silent switch is on, iOS mutes her anyway. Check the switch before assuming she has nothing to say.
- Animation files are fetched once and reused instead of being downloaded again on every idle cycle. Less network chatter, quicker transitions.
Utsuwa 0.13.0
Her voice can run on your own machine now.
OmniVoice, a local voice that speaks a lot of languages
This release adds OmniVoice as a text to speech provider. No cloud account, no API key, nothing leaving your computer. Pick it under Settings > Speech (TTS), choose one of thirteen preset voices, set a language and a speed, and she talks.
It needs a small proxy that you run yourself. That ships in tools/omnivoice with a Docker setup for both NVIDIA and CPU machines, and the setup guide walks through it start to finish. A GPU makes it quick. CPU works, it just takes its time.
This one came from @dezihh, who built the proxy, wired it into settings, and wrote the docs.
You can tell whether your local server is awake
Local voice providers now show a small green or red dot in the provider dropdown. You find out the thing on the other end is not running before you send a message and sit there listening to silence, rather than after. Also from @dezihh.
Smaller things
OmniVoice listens on port 8881 instead of 8880, so it can sit next to a Kokoro or openedai-speech server without the two arguing over the same address.
The proxy is published on localhost only. It has no password and answers requests from anywhere, so it stays on your machine unless you deliberately open it up. The guide shows the one line change if you want to reach it from another device, and is honest about what you are agreeing to when you do.
Docker Desktop users on Mac and Windows can actually reach the proxy now. The old container setup used a networking mode that only ever worked on Linux and quietly did nothing everywhere else.
Upgrading
Nothing to do. If you do not use OmniVoice, nothing about your setup changes. Existing voice providers are untouched.
Full changelog: https://github.com/The-Lab-by-Ordinary-Company/utsuwa/blob/main/CHANGELOG.md
Utsuwa 0.12.1
What's new in 0.12.1
The chat window grew up
The old sidebar is now a real messenger-style window with the input docked inside it, so you type where you read. Drag it anywhere by the header, resize from any edge or corner, snap it left or right, and it comes back exactly where you left it. On phones it opens low on the screen so her face stays in view above the conversation. If it ever wanders off screen, Settings > Display has a Reset position button that brings it home. Half-typed messages and queued photos survive opening and closing the window, and dropping a photo in highlights whichever input is actually on screen.
She tells you what she is doing
The three bouncing dots are retired. While a reply is in flight you see a soft shimmer that narrates the real step: Remembering while she digs through your history, Looking at your photo when you have shown her one, Thinking while she writes. The labels follow the actual pipeline, nothing is staged.
Replies reveal word by word
Her messages fade in one word at a time, in the bubble and in the chat window. Pick the pace or turn it off under Settings > Display > Text Reveal. If your system asks for reduced motion, text appears instantly.
She feels the camera move
Whip the camera around and it ripples through her hair, clothes, and anything else her model gives physics to, in the main view and in photo mode. Her body stays planted, only the soft parts swing, and the settle has just enough bounce to feel alive. The existing Movement slider scales the whole effect.
Small things that add up
- Display modes have clearer names: Immersive, Chat window, Both, Off. Your saved choice carries over.
- Long messages trail forward on one line while you type instead of stacking rows.
- The input bar sits on the softer gray from the design system, can be aligned left, center, or right, holds its exact size when you switch to voice input, and no longer shifts when you open the status tray.
- Chat window resizing works from every edge and no longer misbehaves after closing and reopening.
- The Display settings page now matches its siblings: borderless panels and the same toggle used everywhere else.
New license
Starting with this release Utsuwa is licensed under AGPL-3.0-or-later instead of MIT. For you as a user or self-hoster nothing changes. The new license exists for one case: if someone offers a modified Utsuwa to other people, including as a hosted service, their modifications have to be published under the same license. Improvements to Utsuwa stay open. All releases up to 0.12.0 remain MIT forever.
Full Changelog: v0.12.0...v0.12.1
Utsuwa 0.12.0
What's new in 0.12.0
Settings got a proper sidebar
LLM, TTS, and STT each have their own page in settings now instead of sharing one long scroll on the Character page. The model refresh button also genuinely refetches from your provider now rather than showing a day-old cached list. Thanks @dezihh.
She starts talking sooner
Replies are spoken sentence by sentence: the first sentence plays while the rest is still synthesizing, which cuts the wait on long answers noticeably. Cloud voices make a few small requests per reply instead of one big one, never more than two at a time so provider concurrency limits are respected. If one sentence fails to synthesize, the rest still plays and the error shows up as a toast instead of disappearing into the console. This is also the foundation for true streaming TTS providers in a future release. Thanks @dezihh.
Typing indicator, your way
Two new options under Settings > Display > Typing Indicator: delay the typing dots so they only appear when a reply is genuinely taking a while, and an optional soft ping that plays while she thinks. Both are off by default. Thanks @dezihh.
Under the hood
CI now runs a full production build on every PR alongside type checks and tests, so build-only breakage can no longer reach main with green checks.
Full Changelog: v0.11.0...v0.12.0
Utsuwa 0.11.0
A quick follow-up to yesterday's play update, and it brings back an old friend.
The chat window returns
There is now a proper chat history panel, and it is entirely optional. Pick your style in the new Settings > Display page: keep the classic 3D speech bubbles, switch to the panel, run both, or go fully minimal with neither. The panel floats, drags by its header, resizes from the corner, snaps to either edge, and remembers exactly where you left it. And if you close it while she is mid-reply in panel-only mode, it slides back in so you never miss what she said.
This one comes from @dezihh, his third feature in as many releases, this time with a clean store refactor and a test suite underneath it. Thank you again!
Fixed
Photos taken in Photo Mode on the desktop app now land in your Downloads folder, exactly like the web app. They were previously saved only to internal storage, which amounted to a very well-kept secret.
Auto-update will pick this up on macOS, Windows, and Linux AppImage; .deb and .rpm users should update through their package manager.
Utsuwa 0.10.0
Utsuwa 0.10.0 is the play update. The last few releases were about making her smarter; this one is about making her more fun to be around.
Photo Mode
The camera button now opens a real photo mode. Pose her, set her expression, frame the shot with a free camera, and capture in high resolution. There are pastel backgrounds and cute patterns, color filters, a vignette, polaroid and film frames, draggable stickers, a rule-of-thirds grid, and a self-timer. Everything you see in the preview is exactly what lands in the file, including transparent-background PNGs that drop straight into sticker packs. Turn on head tracking and she keeps her eyes on your camera while she holds the pose.
Reminders and timers
Ask her to remind you about something and she will actually do it. "Remind me in 20 minutes to check the oven" schedules a timer, she brings it up herself when it fires, and if the app was closed when it came due she notices when you come back. Everything pending or fired lives in a new alarm dropdown in the top bar, and it all works across the desktop overlay too.
This one comes from @dezihh, who took a full round of review feedback and turned it around cleanly, multi-window coordination and all. Thank you, dezihh.
She reacts to touch
Tap her and she responds: an expression, a little ripple through her hair and clothes. Where you tap matters, and so does how close the two of you are. Early on she is easily flustered; the warmer reactions are something you earn. Works everywhere, not just in photo mode.
Scene backgrounds and physics
The backdrop behind her is now yours to change from the Controls panel, with pastel gradients and patterns that persist across restarts. And there is a new physics slider, Subtle to Lively, that scales how much her hair and outfit move. While we were in there we also fixed the classic spring-bone freakout after a tab refocus or window drag.
Fixes worth knowing about
Fired reminders no longer count as you interacting with her, so timers cannot advance the relationship or reset the away-time clock, and the "last time you talked" recap works reliably again after restarts.
Full details in the changelog. Auto-update will pick this up on macOS, Windows, and Linux AppImage; .deb and .rpm users should update through their package manager.
Utsuwa 0.9.2
Utsuwa 0.9.2
A quick follow-up release: another community feature lands, and the context-window fix promised in 0.9.1 ships.
Highlights
Try any VRM before you commit to it. Developer Tools has a new Temporary VRM Model section: upload a .vrm file and preview it live in the viewport without saving anything. The model lives in memory only, never touches your library, and your real avatar returns automatically when you leave the page or click Restore Original. Contributed by @dezihh, their third shipped contribution in two releases.
Fixed
- With a Context Window configured, an oversized message in chat history (a large paste, for example) no longer slips through truncation and overflows your model's window. The message that breaks the budget is dropped along with everything older, and your newest message is always kept.
Utsuwa 0.9.1
Utsuwa 0.9.1
A community milestone: this release ships Utsuwa's first community contributions, both from @dezihh, alongside fixes that make custom endpoints and voice switching behave the way you expect.
Highlights
Bring any OpenAI-compatible endpoint, properly. The OpenAI-Compatible provider now discovers your endpoint's models automatically (including a local Ollama), lists them in a searchable dropdown, and exposes advanced parameters: temperature, top P, max tokens, and presence and frequency penalties. Contributed by @dezihh.
Size the prompt to your model. A new Context Window setting (in AI Services and onboarding) works with every LLM provider. When enabled, the amount of injected memory scales to your model's window: small local models get a lean memory layer so the prompt itself doesn't overflow, larger models get more conversation turns and remembered facts. Older chat history is trimmed to fit, always keeping the persona and your newest message. Leave it off and nothing changes. Also contributed by @dezihh, thank you for upstreaming both.
Fixed
- Custom OpenAI-compatible endpoints: a base URL entered without /v1 now works for chat, not just the model dropdown
- Keyless custom endpoints no longer receive a fabricated Authorization header that strict gateways rejected
- Switching TTS providers no longer carries the previous provider's voice along, which could make the new provider fail silently with a voice it doesn't know; the voice now resets to the new provider's default
- Voice playback failures now show a brief message naming the actual problem instead of the companion just going quiet
Under the hood
- New pure helpers for TTS provider defaults and error formatting, context-window budgeting, and endpoint normalization, all with unit tests (the suite is now 220 tests)