// ecoute2

Async voice mailbox — whisper STT in, ElevenLabs/edge-tts out, localMesh routing for agents. Rebuild applies the radix shell with three views: full, mini (Spotify-style), ribbon (above-taskbar).
source repoartificer3120/ecoute2 · 688 lines · PyQt5 on untitledSDK BaseFrame workerstranscriber.py (whisper) · tts_worker.py (edge-tts + ElevenLabs) mockupradix-ecoute2 statusawaiting 6 decisions
radix-ecoute2 mockup — full / mini / ribbon (live)open ↗

What stays

Decisions needed

decision 1 · views to ship

All three (full / mini / ribbon), or full only? Recommend: full first, mini second, ribbon third — sequence them.

decision 2 · waveform — live or decorative

Two side-by-side waveforms (you / agent). Live (mic + TTS sampling), decorative (animated placeholder), or mixed (live for "you", decorative for "agent")?

decision 3 · "play" button semantics

Mockup has 5 buttons (connect / record / send / play / end). Current has 4. What does "play" do — replay last response, start playback of queued message, or toggle TTS globally?

decision 4 · BaseFrame reskin scope

untitledSDK BaseFrame defines the green/orange terminal palette. Reskin BaseFrame globally (affects pinger, pocketViewer, all SDK widgets), override locally inside ecoute2 only, or add a theme parameter to BaseFrame?

decision 5 · view switching mechanism

When user toggles to mini, does the full window resize/reflow, or does a new compact window spawn? Affects state continuity.

decision 6 · avatar in mini view

Gradient circle with first letter of agent handle, picass0 portrait, or static color-coded blob per agent?

Work orders

WO-1 — theme migration

Add RADIX palette constants. Swap font to system sans-serif. Outer corner radius 12px.

WO-2 — titlebar

3 traffic dots + "ecoute2" + teal "voice" badge + agent select + voice select.

WO-3 — dual waveform area

Two columns separated by divider, blue bars for "you", green for "agent". Custom QWidget paintEvent.

WO-4 — 5-button control row

connect (●) / record (⏺) / send (▶) / play (▷) / end (■). 32px circles with state colors.

WO-5 — status bar

Green dot + "connected -- {agent} via localMesh" left, "whisper + edge-tts" right.

WO-6 — mini view (Spotify-style)

280px compact. 28px gradient avatar + name + status, single waveform, 3 micro-buttons.

WO-7 — ribbon strip

320x40 above-taskbar floating bar. Status dot + name + slim wave + 2-3 micro-buttons. Translucent backdrop blur.

WO-8 — view switching

Hotkey to cycle, state preserved across views, geometry persisted.

WO-9 — smoke test

Connect, record, transcribe, agent response, TTS, waveform animation. Cycle voices. Cycle views.

Out of scope