fix: give realtime voice a dedicated conversation view
Rebuild & Deploy / rebuild (push) Successful in 3m7s

This commit is contained in:
snowspeeder committed 2026-10-04 10:35:34 -04:00
1 parent 257ab48f0f
commit 8905dc2c2a
9 files changed
+302 -101

No files matched your search

+43 -57
View File
@@ -525,30 +525,28 @@ input::placeholder,textarea::placeholder{
object-fit:cover;
border-radius:6px}
.inline-voice{
flex-shrink:0;
display:grid;
grid-template-columns:84px minmax(0,1fr) auto;
align-items:center;
gap:16px;
padding:16px 24px;
border-bottom:1px solid var(--line);
background:var(--hope-persona-surface);
max-height:38dvh;
overflow:auto}
.inline-voice{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:var(--canvas)}
.voice-session-header{display:flex;align-items:center;gap:14px;padding:14px max(24px,calc((100% - 740px)/2));border-bottom:1px solid var(--line);background:var(--hope-persona-surface);flex-shrink:0}
.voice-session-header .led-wall{width:48px;height:48px;flex-shrink:0}
.voice-summary{flex:1;min-width:0;overflow-wrap:anywhere}
.primary-chat[data-voice-active="true"]>#chatNotice{display:none}
.led-wall{
width:84px;
height:84px;
display:grid;
grid-template-columns:repeat(21,1fr);
grid-template-rows:repeat(21,1fr);
grid-template-columns:repeat(21,minmax(0,1fr));
grid-template-rows:repeat(21,minmax(0,1fr));
overflow:hidden;
place-items:center;
padding:4px;
color:var(--accent);
border-radius:12px}
.led-dot{
width:var(--sz,3px);
height:var(--sz,3px);
width:100%;
height:100%;
max-width:3px;
max-height:3px;
padding:0;
min-width:1px;
min-height:1px;
border:0;
@@ -568,16 +566,8 @@ input::placeholder,textarea::placeholder{
line-height:1.6;
color:var(--ink-soft);
margin-top:4px}
.voice-controls{
display:flex;
flex-wrap:wrap;
gap:6px;
justify-content:flex-end;
max-width:240px}
.voice-controls .btn{
font-size:12px}
.voice-controls #startBtn:disabled,.voice-controls #stopBtn:disabled{
display:none}
.voice-controls{display:flex;gap:12px;justify-content:center;flex-shrink:0;padding:14px 16px max(14px,env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--hope-persona-surface)}
.voice-controls .btn{min-width:112px}
.mic-meter{
height:2px;
max-width:170px;
@@ -588,20 +578,19 @@ input::placeholder,textarea::placeholder{
height:100%;
width:0;
background:var(--accent)}
.live-transcript{
grid-column:2/-1;
font-size:13px;
line-height:1.65}
.live-transcript #messages:empty{
display:none}
.message-row{
margin:10px 0;
overflow-wrap:anywhere}
.message-row.user{
font-weight:600}
.message-row.system{
color:var(--ink-soft);
font-size:11px}
.live-transcript{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:28px max(24px,calc((100% - 740px)/2));scrollbar-gutter:stable;font-size:15px;line-height:1.8}
.voice-transcript-hint{color:var(--ink-soft);max-width:74ch;margin:12px 0}
#voiceHistory:not(:empty){border-bottom:1px solid var(--line);margin-bottom:24px}
#voiceHistory .message-actions{display:none}
.message-row{max-width:74ch;margin:0 0 24px;overflow-wrap:anywhere}
.message-row:before{content:"Hope";display:block;font-size:13px;font-weight:600;margin-bottom:8px}
.message-row.user{margin-left:auto;max-width:85%}
.message-row.user:before{content:"You";color:var(--ink-soft)}
.message-row.user .bubble{background:var(--hope-selected-wash);padding:14px 18px;border-radius:12px}
.message-row .bubble{white-space:pre-wrap}
.message-row.partial .bubble{color:var(--ink-soft)}
.message-row.system{color:var(--ink-soft);font-size:13px}
.message-row.system:before{content:none}
.audio-viz{
display:none}
@@ -1085,24 +1074,12 @@ dialog p{
#researchMode{
max-width:90px;
font-size:11px}
.inline-voice{
grid-template-columns:64px minmax(0,1fr);
gap:10px;
padding:12px 16px;
max-height:40dvh}
.led-wall{
width:64px;
height:64px}
.voice-controls{
grid-column:1/-1;
max-width:none;
justify-content:flex-start}
.live-transcript{
grid-column:1/-1}
.voice-summary #stateLabel{
font-size:16px}
.voice-summary #modeDescription{
display:none}
.voice-session-header{padding:12px 16px;gap:10px}
.voice-session-header .led-wall{width:36px;height:36px}
.voice-session-header #settingsBtn{padding:9px 8px;font-size:12px}
.voice-summary #stateLabel{font-size:16px}
.live-transcript{padding:22px 18px;font-size:14px}
.message-row.user{max-width:95%}
.settings-window>.dialog-head{
padding:18px}
.settings-layout{
@@ -1164,3 +1141,12 @@ dialog p{
gap:4px}
}
@media(max-height:480px){
.chat-sidebar nav{flex:1 0 auto;min-height:max-content;overflow:visible}
.primary-chat[data-voice-active="true"] .chat-topbar{min-height:54px;padding-block:5px}
.voice-session-header{padding-block:6px}
.voice-summary h2,.voice-summary #bargeHint,.voice-summary #thinkingChip,.mic-meter{display:none}
.voice-controls{padding-block:6px}
.live-transcript{padding-block:16px}
}