Feat/UI redesign p3#22
Closed
ailuckly wants to merge 4 commits into
Closed
Conversation
Critical: - PostgreSQL JDBC driver: 42.6.0 → 42.7.4 Fixes SQL injection via line comment generation (CVE-2024-1597) High (resolved via npm audit fix): - vocata-web: vite, rollup, lodash-es, flatted, immutable, minimatch (0 vulnerabilities after fix) - vocata-admin: vite, rollup, axios, lodash, lodash-es, tar, flatted, immutable (0 vulnerabilities after fix) Both package-lock.json files regenerated to clear stale transitive dependency references that were triggering GitHub Dependabot alerts.
VoiceCallPanel: full redesign to immersive fullscreen mode - Fixed position overlay (z-index 9999) with blurred character avatar background (filter: blur(40px) brightness(0.3)) - Center: large 160px avatar with dual pulse-ring animation on speaking state, status text + character name below - Subtitles: toggleable (CC button), user messages as right-aligned bubbles, AI messages as left-aligned text with speaker label - Controls: CC toggle, mute (inverts on muted), hangup (red, 76px, rotated phone icon), all with backdrop-filter blur - Transitions: slide-up enter, fade for subtitles - New prop: characterAvatar for background + avatar display ChatPage: added VoiceTranscriptItem type import for voice panel
Ignore local agent/worktree directories, Python virtual environments, backend IDE/build artifacts, and generated avatar assets so they do not leak into PRs.
Handle missing qiniu.region values by using the Qiniu SDK auto region instead of dereferencing null. Add a focused regression test that constructs UploadManager without an explicit region.
There was a problem hiding this comment.
Pull request overview
This PR continues the UI redesign by introducing an immersive full-screen voice-call panel and improving how live voice transcripts are surfaced during a call, while also hardening backend Qiniu region configuration and updating dependency lockfiles/ignores.
Changes:
- Redesign
VoiceCallPanelinto an immersive full-screen “voice mode” with subtitles toggle and new controls. - Enhance
ChatPagevoice transcript rendering to include live STT text and streaming AI content. - Backend: default Qiniu region to
autoRegion()when missing and add a regression test; bump PostgreSQL driver version; update web lockfile and repo.gitignore.
Reviewed changes
Copilot reviewed 5 out of 8 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| vocata-web/src/views/ChatPage.vue | Passes character avatar into voice panel; augments visible voice transcripts with live STT + streaming AI text. |
| vocata-web/src/components/chat/VoiceCallPanel.vue | Replaces compact panel with immersive full-screen voice UI, blurred background, subtitles, and controls. |
| vocata-web/package-lock.json | Updates resolved dependency versions for the web app. |
| vocata-server/src/main/java/com/vocata/file/config/QiniuConfig.java | Falls back to Region.autoRegion() when region is not configured. |
| vocata-server/src/test/java/com/vocata/file/config/QiniuConfigTest.java | Adds a test covering missing-region fallback behavior. |
| vocata-server/pom.xml | Bumps PostgreSQL JDBC driver property version. |
| .gitignore | Ignores additional local workspace artifacts and generated avatar assets. |
Files not reviewed (1)
- vocata-web/package-lock.json: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| <div class="avatar-container" :class="{ 'is-speaking': speaking, 'is-muted': muted }"> | ||
| <div class="pulse-ring"></div> | ||
| <div class="pulse-ring delay-1"></div> | ||
| <img :src="characterAvatar" class="character-avatar" alt="Character Avatar" /> |
Comment on lines
+41
to
+66
| <button | ||
| class="control-btn cc-btn" | ||
| :class="{ 'is-active': showSubtitles }" | ||
| @click="showSubtitles = !showSubtitles" | ||
| title="切换字幕" | ||
| > | ||
| <span class="voice-call-panel__speaker">{{ entry.speaker === 'user' ? '我' : characterName }}</span> | ||
| <span class="voice-call-panel__text">{{ entry.text }}</span> | ||
| </div> | ||
| <span class="cc-text">CC</span> | ||
| </button> | ||
|
|
||
| <button | ||
| class="control-btn mute-btn" | ||
| :class="{ 'is-muted': muted }" | ||
| @click="$emit('mute')" | ||
| :title="muted ? '取消静音' : '静音'" | ||
| > | ||
| <el-icon v-if="muted"><MicrophoneOff /></el-icon> | ||
| <el-icon v-else><Microphone /></el-icon> | ||
| </button> | ||
|
|
||
| <button | ||
| class="control-btn hangup-btn" | ||
| @click="$emit('hangup')" | ||
| title="结束通话" | ||
| > | ||
| <el-icon><PhoneFilled /></el-icon> | ||
| </button> |
| <!-- Main Visual Array --> | ||
| <div class="voice-center"> | ||
| <!-- Avatar Ring that pulses --> | ||
| <div class="avatar-container" :class="{ 'is-speaking': speaking, 'is-muted': muted }"> |
Comment on lines
+354
to
+367
|
|
||
| if (currentSTTText.value) { | ||
| list.push({ | ||
| speaker: 'user', | ||
| text: currentSTTText.value, | ||
| timestamp: Number.MAX_SAFE_INTEGER - 1 | ||
| }) | ||
| } | ||
|
|
||
| if (currentStreamingMessage.value && currentStreamingMessage.value.content) { | ||
| list.push({ | ||
| speaker: 'ai', | ||
| text: currentStreamingMessage.value.content, | ||
| timestamp: Number.MAX_SAFE_INTEGER |
Comment on lines
+5
to
+8
| <div | ||
| class="immersive-bg" | ||
| :style="{ backgroundImage: `url(${characterAvatar || '/default-bg.png'})` }" | ||
| ></div> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📌 变更内容
✅ 测试验证
PR 提交规范提醒: