stardance has been extended another month! the new deadline is october 31 :)

You are browsing as a guest. Sign up (or log in) to start making projects!

13h 21m 13s logged

E.V. got a face (and moved to Ubuntu)

Iterations 9, 10 and 11. Lowkey the biggest glow up E.V. has had so far.

9 + 10: WE GOT A FACEEEE

E.V. has a face now. It’s a little floating dark screen with two glowing eyes that sits on your desktop and reacts to whatever it’s doing. Listening, thinking, talking, happy, confused, sleepy, and even angry for some reason. yeah dont ask.

  • It’s its own process. The face runs on PySide6 in a separate process, so the main assistant never loads Qt and stays tiny. If the face crashes, E.V. doesn’t care, it just keeps going. No PySide6 installed? No face, nothing else changes.

  • Every mood is just JSON. All the expressions live in expressions.json as eye shapes, lid angles, glow and colour. The eyes ease between moods smoothly, blink on their own and glance around so it never looks dead inside.

  • Captions. What you said and what E.V. says back pop up in a speech bubble next to the face. The bubble is click-through so it never gets in the way.

  • It only pulls up when you call it. Say “E.V.” and it slides in, stop talking and it dips. If you’re watching something full screen it stays hidden, because nobody wants a robot photobombing their movie.

  • Media control. “Pause the music”, “next song”, “turn it down”. Works on Linux and Windows without installing anything extra.

  • Finally Stopped Ignoring Ubuntu. I switched to Ubuntu and half of E.V. broke ngl. The mic needed a fallback to pw-record / parec / arecord, app launching had to learn .desktop files, and the voice plays through GStreamer. Wayland doesn’t let apps float on top, so the face sneaks through XWayland instead.

Bugs that were lowkey unhinged

  • The face crashed instantly when started from VS Code because the snap terminal leaked its own libraries into Qt. Fixed by cleaning the environment before Qt loads.- On Ubuntu the “default microphone” was actually my speakers. E.V. was literally recording YouTube. Now it picks a real mic by name.- The glow was eating a third of a CPU core. Cached the drawing and dropped the frame rate when nothing is moving. Way chiller now.

11: E.V. stopped talking to itself. lol

This one was actually wild. On speakers, E.V. would hear its own voice, think I was interrupting, transcribe itself and then reply to itself. Forever. Main character behaviour, but no.

Three fixes, stacked:

  • Compare against itself, not the room. Interrupting used to mean “louder than background noise”, and speakers win that every time. Now you have to be louder than E.V.’s own voice coming back through the mic.

  • It learns what I sound like. A small voiceprint learns my voice and E.V.‘s voice through the speakers, and keeps adapting the more you use it. If the audio sounds like E.V., it’s ignored. It’s not face ID for voices, it just tells “me” apart from “the speakers”.

  • It checks the words. If what it just heard matches what it just said, it gets dropped. This is the one that makes the loop actually impossible instead of just less likely.All of it is pinned in tests so it can’t sneak back. The suite is at 866 tests now, all offline. That’s the update fr.

yk i gotta come clean. half of this major update was vibe coded. forgive me. but the other half was done by me.
ALSO THIS DEVLOG is not vibecoded. it took too long.

0
66

Comments 0

No comments yet. Be the first!