
























@@ -161,7 +161,7 @@ fun VoiceScreen(
161161 .fillMaxSize()
162162 .imePadding()
163163 .padding(horizontal = 20.dp, vertical = 8.dp),
164- verticalArrangement = Arrangement.spacedBy(8.dp),
164+ verticalArrangement = Arrangement.spacedBy(10.dp),
165165 ) {
166166VoiceHeader(
167167 statusText = if (voiceActive || !gatewayReady) activeStatus else "Your voice command center.",
@@ -371,12 +371,12 @@ private fun TalkSessionScreen(
371371 .fillMaxSize()
372372 .imePadding()
373373 .padding(horizontal = 20.dp, vertical = 8.dp),
374- verticalArrangement = Arrangement.spacedBy(11.dp),
374+ verticalArrangement = Arrangement.spacedBy(10.dp),
375375 ) {
376376Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) {
377377VoicePlainIconButton(icon = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back to voice", onClick = onEndTalk)
378378Column(modifier = Modifier.weight(1f), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(3.dp)) {
379-Text(text = "Realtime Talk", style = ClawTheme.type.title.copy(fontSize = 14.sp, lineHeight = 17.sp), color = ClawTheme.colors.text)
379+Text(text = "Realtime Talk", style = ClawTheme.type.title.copy(fontSize = 16.sp, lineHeight = 20.sp), color = ClawTheme.colors.text)
380380Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(5.dp)) {
381381Box(modifier = Modifier.size(4.5.dp).clip(CircleShape).background(if (speaking || listening) ClawTheme.colors.success else ClawTheme.colors.textSubtle))
382382Text(
@@ -397,8 +397,8 @@ private fun TalkSessionScreen(
397397 }
398398399399Surface(
400- modifier = Modifier.fillMaxWidth().height(58.dp),
401- shape = RoundedCornerShape(ClawTheme.radii.pill),
400+ modifier = Modifier.fillMaxWidth().height(52.dp),
401+ shape = RoundedCornerShape(ClawTheme.radii.panel),
402402 color = ClawTheme.colors.canvas,
403403 border = BorderStroke(1.dp, ClawTheme.colors.borderStrong),
404404 ) {
@@ -429,7 +429,7 @@ private fun TalkTranscript(
429429entries: List<VoiceConversationEntry>,
430430modifier: Modifier = Modifier,
431431) {
432-LazyColumn(modifier = modifier.fillMaxWidth(), verticalArrangement = Arrangement.spacedBy(7.dp)) {
432+LazyColumn(modifier = modifier.fillMaxWidth(), verticalArrangement = Arrangement.spacedBy(8.dp)) {
433433if (entries.isEmpty()) {
434434 item {
435435TalkTranscriptCard(label = "OpenClaw", text = "Listening for your next turn.", muted = true)
@@ -458,7 +458,7 @@ private fun TalkTranscriptCard(
458458 color = ClawTheme.colors.surface,
459459 border = BorderStroke(1.dp, ClawTheme.colors.border),
460460 ) {
461-Column(modifier = Modifier.padding(horizontal = 10.dp, vertical = 8.dp), verticalArrangement = Arrangement.spacedBy(5.dp)) {
461+Column(modifier = Modifier.padding(horizontal = 14.dp, vertical = 9.dp), verticalArrangement = Arrangement.spacedBy(5.dp)) {
462462Text(text = label, style = ClawTheme.type.section, color = ClawTheme.colors.text)
463463Text(text = text, style = ClawTheme.type.body, color = if (muted) ClawTheme.colors.textMuted else ClawTheme.colors.text)
464464 }
@@ -476,7 +476,7 @@ private fun TalkControl(
476476Surface(
477477 onClick = onClick,
478478 modifier = Modifier.size(ClawTheme.spacing.touchTarget),
479- shape = CircleShape,
479+ shape = RoundedCornerShape(ClawTheme.radii.button),
480480 color = if (primary) ClawTheme.colors.primary else ClawTheme.colors.canvas,
481481 contentColor = if (primary) ClawTheme.colors.primaryText else ClawTheme.colors.text,
482482 border = BorderStroke(1.dp, if (primary) ClawTheme.colors.primary else ClawTheme.colors.border),
@@ -592,7 +592,7 @@ private fun VoiceHero(
592592onStartDictation: () -> Unit,
593593onConnectGateway: () -> Unit,
594594) {
595-Column(horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(10.dp)) {
595+Column(horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(9.dp)) {
596596VoiceOrb(
597597 active = micEnabled || talkModeEnabled,
598598 listening = talkModeListening || voiceCaptureMode == VoiceCaptureMode.ManualMic,
@@ -639,7 +639,7 @@ private fun VoiceHero(
639639 }
640640 }
641641642-ClawPanel(contentPadding = PaddingValues(horizontal = 0.dp, vertical = 0.dp)) {
642+ClawPanel(contentPadding = PaddingValues(horizontal = 14.dp, vertical = 4.dp)) {
643643VoiceModeRow(
644644 title = if (talkModeEnabled) "End Talk" else "Realtime Talk",
645645 subtitle =
@@ -696,19 +696,19 @@ private fun VoiceModeRow(
696696) {
697697Surface(onClick = onClick, enabled = enabled, color = Color.Transparent, contentColor = ClawTheme.colors.text) {
698698Row(
699- modifier = Modifier.fillMaxWidth().heightIn(min = 60.dp).padding(horizontal = 10.dp, vertical = 6.dp),
699+ modifier = Modifier.fillMaxWidth().heightIn(min = 54.dp).padding(horizontal = 0.dp, vertical = 7.dp),
700700 verticalAlignment = Alignment.CenterVertically,
701701 horizontalArrangement = Arrangement.spacedBy(10.dp),
702702 ) {
703703Surface(
704- modifier = Modifier.size(34.dp),
705- shape = CircleShape,
704+ modifier = Modifier.size(30.dp),
705+ shape = RoundedCornerShape(ClawTheme.radii.control),
706706 color = if (enabled) ClawTheme.colors.surface else ClawTheme.colors.canvas,
707707 contentColor = if (enabled) ClawTheme.colors.text else ClawTheme.colors.textSubtle,
708708 border = BorderStroke(1.dp, ClawTheme.colors.border),
709709 ) {
710710Box(contentAlignment = Alignment.Center) {
711-Icon(imageVector = icon, contentDescription = null, modifier = Modifier.size(16.dp))
711+Icon(imageVector = icon, contentDescription = null, modifier = Modifier.size(15.dp))
712712 }
713713 }
714714Column(modifier = Modifier.weight(1f), verticalArrangement = Arrangement.spacedBy(2.dp)) {
@@ -719,7 +719,7 @@ private fun VoiceModeRow(
719719Icon(
720720 imageVector = Icons.AutoMirrored.Filled.KeyboardArrowRight,
721721 contentDescription = null,
722- modifier = Modifier.size(21.dp),
722+ modifier = Modifier.size(18.dp),
723723 tint = ClawTheme.colors.textMuted,
724724 )
725725 }
@@ -738,19 +738,19 @@ private fun VoiceProviderCard(gatewayStatus: String) {
738738 border = BorderStroke(1.dp, ClawTheme.colors.border),
739739 ) {
740740Row(
741- modifier = Modifier.fillMaxWidth().padding(horizontal = 12.dp, vertical = 9.dp),
741+ modifier = Modifier.fillMaxWidth().padding(horizontal = 14.dp, vertical = 9.dp),
742742 verticalAlignment = Alignment.CenterVertically,
743743 horizontalArrangement = Arrangement.spacedBy(10.dp),
744744 ) {
745745Surface(
746- modifier = Modifier.size(34.dp),
747- shape = CircleShape,
746+ modifier = Modifier.size(30.dp),
747+ shape = RoundedCornerShape(ClawTheme.radii.control),
748748 color = ClawTheme.colors.canvas,
749749 contentColor = ClawTheme.colors.text,
750750 border = BorderStroke(1.dp, ClawTheme.colors.borderStrong),
751751 ) {
752752Box(contentAlignment = Alignment.Center) {
753-Icon(imageVector = Icons.Default.GraphicEq, contentDescription = null, modifier = Modifier.size(17.dp))
753+Icon(imageVector = Icons.Default.GraphicEq, contentDescription = null, modifier = Modifier.size(15.dp))
754754 }
755755 }
756756Column(modifier = Modifier.weight(1f), verticalArrangement = Arrangement.spacedBy(2.dp)) {
@@ -780,7 +780,7 @@ private fun VoicePrimaryAction(
780780Surface(
781781 onClick = onClick,
782782 modifier = Modifier.fillMaxWidth().height(ClawTheme.spacing.touchTarget),
783- shape = RoundedCornerShape(ClawTheme.radii.pill),
783+ shape = RoundedCornerShape(ClawTheme.radii.button),
784784 color = ClawTheme.colors.primary,
785785 contentColor = ClawTheme.colors.primaryText,
786786 ) {
@@ -802,7 +802,7 @@ private fun VoiceOrb(
802802speaking: Boolean,
803803) {
804804Surface(
805- modifier = Modifier.size(132.dp),
805+ modifier = Modifier.size(112.dp),
806806 shape = CircleShape,
807807 color = if (active) ClawTheme.colors.surfacePressed else ClawTheme.colors.surface,
808808 border = BorderStroke(1.dp, if (active) ClawTheme.colors.borderStrong else ClawTheme.colors.border),
@@ -817,7 +817,7 @@ private fun VoiceOrb(
817817else -> Icons.Default.Mic
818818 },
819819 contentDescription = null,
820- modifier = Modifier.size(38.dp),
820+ modifier = Modifier.size(32.dp),
821821 tint = ClawTheme.colors.text,
822822 )
823823Waveform(active = active)
@@ -875,7 +875,7 @@ private fun VoiceTranscript(
875875 item {
876876Column(verticalArrangement = Arrangement.spacedBy(8.dp)) {
877877Text(text = "Live transcript", style = ClawTheme.type.caption, color = ClawTheme.colors.textSubtle)
878-ClawPanel(contentPadding = PaddingValues(horizontal = 10.dp, vertical = 9.dp)) {
878+ClawPanel(contentPadding = PaddingValues(horizontal = 14.dp, vertical = 9.dp)) {
879879Column(verticalArrangement = Arrangement.spacedBy(4.dp)) {
880880Text(text = "No transcript yet", style = ClawTheme.type.section, color = ClawTheme.colors.text)
881881Text(
@@ -902,7 +902,7 @@ private fun VoiceTurnCard(entry: VoiceConversationEntry) {
902902 contentColor = ClawTheme.colors.text,
903903 border = BorderStroke(1.dp, if (entry.isStreaming) ClawTheme.colors.borderStrong else ClawTheme.colors.border),
904904 ) {
905-Column(modifier = Modifier.padding(horizontal = 10.dp, vertical = 8.dp), verticalArrangement = Arrangement.spacedBy(5.dp)) {
905+Column(modifier = Modifier.padding(horizontal = 14.dp, vertical = 9.dp), verticalArrangement = Arrangement.spacedBy(5.dp)) {
906906Text(
907907 text = if (isUser) "You" else "OpenClaw",
908908 style = ClawTheme.type.caption.copy(fontSize = 12.5.sp, lineHeight = 16.sp, fontWeight = FontWeight.SemiBold),
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。