fix(frontend): improve responsive transcripts and simplify theme styles

This commit is contained in:
2026-10-07 09:43:30 -03:00
parent a56e1082e5
commit 4ce6082b93
16 changed files with 536 additions and 1123 deletions
+25 -6
View File
@@ -117,6 +117,10 @@ browsable pages.
Voice, editable system instructions and connection settings are kept in browser
`localStorage` under `s2s.ws.*` keys. A non-empty `S2S_PRIMARY_PROMPT` pins the
instruction field. Restart applies connection/voice changes to a new session.
Settings and tool preferences use a draft: **Guardar** applies them and
**Cancelar** or dialog dismissal discards unsaved edits. Voice and instructions
update the live session on Save; connection changes apply on the next start.
Noise-gate calibration is explicitly live and saves immediately.
Model voice names are runtime identifiers and stay unchanged across UI
translations.
@@ -135,19 +139,33 @@ enabled data sources and limits.
`S2S_THEME=white` selects the light interface. `dark` or an empty value selects
the dark aurora theme. Theme-specific sections remain hidden until configuration
resolves, with a fallback to avoid an invisible page after config failure.
Configuration failures offer **Reintentar** and block session startup until a
retry succeeds. Reports load independently. Caller context gets an eight-second
loading window before the interface allows a generic session.
`S2S_START_SESSION_MODE` controls initial microphone/session startup:
| Value | Behavior |
|---|---|
| Empty/default | User taps to start |
| `TALK` | After a 2-second warmup, show an audio unlocker; a user gesture starts the session and greeting |
| `TALKFIRST` | After a 2-second warmup, attempt automatic start and inject the Spanish wake phrase; microphone failure falls back to the unlocker |
| `TALK` | After a 2-second warmup, show a dismissible startup dialog; a user gesture starts the session and greeting |
| `TALKFIRST` | After a 2-second warmup, attempt automatic start and inject the Spanish wake phrase; microphone failure falls back to the startup dialog |
The warmup is a timer, not proof that all upstream context requests have
finished. Browser permission and audio policies can still require a gesture.
The warmup starts after configuration and caller-context loading settle;
optional reports and tools can still be loading. Browser permission and audio
policies can still require a gesture.
The greeting uses the same `hola vocero` input as wake-word handling.
On browsers with speech recognition, **Activar con «hola vocero»** opts into
wake-word listening for the current page session. The interface shows when the
microphone is listening for that phrase. It is off by default, pauses while a
dialog or voice session is active, and turns off when the conversation stops.
The transcript keeps your reading position when new messages arrive. **Ir al
último mensaje** resumes following the conversation. Names and Santiago-local
times appear with each message; downloaded JSON and text retain raw timestamps
and message text. The interface respects the browser's reduced-motion setting.
## Queue and session lifecycle
Load-balancer mode proxies `POST /api/session`. A free compute slot returns a
@@ -161,8 +179,9 @@ to a keepalive fetch. Expired tickets and missed join deadlines require a new
attempt. Full queues return `503` with `state: "at_capacity"`.
Once connected, session teardown closes the microphone, audio graph and
WebSocket. The 30-second inactivity timeout remains active when the assistant
is not speaking. Caller-profile lookup and upstream authorization operate
WebSocket. The 30-second inactivity timeout counts time waiting for user input;
processing, external reasoning and buffered playback do not consume it.
Caller-profile lookup and upstream authorization operate
independently of allocation and use their existing configured endpoints.
For external transcript processing, configure the selected