Feat/UI redesign p3#23
Merged
Merged
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 P3 frontend redesign by updating the chat voice-call experience (immersive panel UI + transcript handling), and includes a small backend robustness fix for Qiniu region configuration with a regression test, plus dependency/ignore-file housekeeping.
Changes:
- Web: Wire character avatar into the voice call panel and adjust visible voice transcript logic to include in-progress STT/streaming content.
- Web: Redesign
VoiceCallPanelinto a full-screen “immersive voice mode” UI with subtitle toggling and updated controls. - Server: Make Qiniu region selection null-safe by falling back to
Region.autoRegion(), and add a unit test to prevent regressions.
Reviewed changes
Copilot reviewed 5 out of 8 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| vocata-web/src/views/ChatPage.vue | Passes characterAvatar into voice panel and adjusts transcript computation to include live STT/streaming snippets. |
| vocata-web/src/components/chat/VoiceCallPanel.vue | Replaces the prior compact panel with an immersive full-screen voice UI, including avatar/background usage and subtitle toggles. |
| vocata-web/package-lock.json | Updates frontend dependency lockfile versions. |
| vocata-server/src/main/java/com/vocata/file/config/QiniuConfig.java | Adds null guard for qiniu.region to avoid NPE and default to SDK auto-region. |
| vocata-server/src/test/java/com/vocata/file/config/QiniuConfigTest.java | Adds a regression test asserting uploadManager() doesn’t throw when region is missing. |
| vocata-server/pom.xml | Bumps PostgreSQL driver version property. |
| .gitignore | Expands ignore rules for local agent/venv/worktree/build outputs 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.
| <!-- Blurred Background --> | ||
| <div | ||
| class="immersive-bg" | ||
| :style="{ backgroundImage: `url(${characterAvatar || '/default-bg.png'})` }" |
| <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" /> |
Remove unused script setup bindings reported by ESLint in the shell, layout, and login page. Type the generated avatar palette as color pairs so vue-tsc can verify the fallback avatar helper. Verification: ./scripts/validate-web.sh
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.
feat(ui): P3 frontend redesign and chat voice workspace
Summary
This PR delivers the P3 frontend redesign pass and supporting cleanup for the VocaTa web experience.
Major changes:
styling.
professional product direction.
wiring.
qiniu.regionfalls back to SDK auto-region instead of throwing anull dereference.
.gitignorecoverage for local agent files, worktrees, virtualenvs, backend IDE/build output, andgenerated local avatar assets.
Scope
Frontend:
vocata-web/src/assets/styles/theme.cssvocata-web/src/layouts/BasicLayout.vuevocata-web/src/components/shell/AppSidebar.vuevocata-web/src/views/SearchRole.vuevocata-web/src/views/LoginPage.vuevocata-web/src/views/ProfilePage.vuevocata-web/src/views/SettingsPage.vuevocata-web/src/views/ChatPage.vuevocata-web/src/components/chat/*vocata-web/src/utils/avatar.tsBackend:
vocata-server/src/main/java/com/vocata/file/config/QiniuConfig.javavocata-server/src/test/java/com/vocata/file/config/QiniuConfigTest.javaRepo hygiene:
.gitignoreVerification
Passed:
cd vocata-web && npm run buildKnown verification issue:
cd vocata-server && mvn -Dmaven.repo.local=/tmp/juhao_m2repo -Dtest=QiniuConfigTest testspring-boot-maven-plugin:3.1.4fromrepo.maven.apache.orgwithRemote host terminated the handshake.Notes:
material, not a build blocker.
origin/feat/ui-redesign-p3.