feat: 完成 Web UI 全量替换收口#22
Open
MapleEve wants to merge 283 commits into
Open
Conversation
|
Claude encountered an error after 0s —— View job I'll analyze this and get back to you. |
❌ 1 Tests Failed:
View the top 1 failed test(s) by shortest run time
To view more test analytics, go to the Test Analytics Dashboard |
There was a problem hiding this comment.
Pull request overview
This PR completes the “Graphite Glass” Web UI replacement by migrating remaining legacy surfaces to the new tokenized UI primitives, while adding regression coverage for key UX flows (settings shell scrolling, dashboard overlays, copy actions, and AI rename preview/apply).
Changes:
- Replace remaining “warm hardware / MetalButton” UI usage with Graphite Glass primitives across auth/onboarding/dashboard/settings/recording detail surfaces.
- Add/adjust dashboard topbar overlays (search + activity), source-provider row bridging, copy-to-clipboard entrypoints, and AI rename preview/apply flow.
- Add multiple Vitest “UI regression” tests that lock in critical DOM structure/strings for the new UI.
Reviewed changes
Copilot reviewed 45 out of 45 changed files in this pull request and generated 12 comments.
Show a summary per file
| File | Description |
|---|---|
| src/features/dashboard/components/library-search.tsx | New controlled search overlay with keyboard navigation and result rendering. |
| src/features/dashboard/components/activity-overlay.tsx | New activity overlay derived from sync/transcription state. |
| src/features/settings/components/sections/data-sources-section.tsx | Updated data-source settings UX (status lanes, test/save messaging). |
| src/features/recordings/components/transcription-section.tsx | Updated transcript section including copy actions and error toasts. |
| src/app/api/recordings/[id]/rename/auto/route.ts | Supports auto-rename “preview vs apply” mode via request body. |
| src/features/recordings/components/ai-rename-preview-card.tsx | Shared UI card for AI rename preview/apply actions. |
| src/tests/full-ui-replacement-regression.test.ts | Regression coverage for token replacement + key flows (search, rename preview, safe source detail rendering). |
| src/tests/dashboard-ui-foundation.test.ts | Regression coverage for dashboard layout + provider rows. |
| src/tests/dashboard-search-ui-regression.test.ts | Regression coverage for search overlay + activity overlay wiring and states. |
| src/tests/settings-ui-replacement-regression.test.ts | Regression coverage for settings dialog fixed-height shell + data-source section affordances. |
| src/tests/recording-detail-copy-ui-regression.test.ts | Regression coverage for copy entrypoints + clipboard helper usage. |
| src/tests/rename-auto-route.test.ts | Updated route tests for preview/apply behavior and response shape (applied). |
| src/tests/react-surface-ssr.test.ts | SSR surface coverage updated to new components/props. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+84
to
+88
| try { | ||
| return `${formatRelativeDistance(date, "zh-CN")}前`; | ||
| } catch { | ||
| return null; | ||
| } |
Comment on lines
+34
to
+38
| { value: "all", label: "全部" }, | ||
| { value: "recording", label: "录音" }, | ||
| { value: "transcript", label: "逐字稿" }, | ||
| { value: "speaker", label: "说话人" }, | ||
| { value: "tag", label: "标签" }, |
| <span>{resultCountLabel}</span> | ||
| <span>最多显示 12 条</span> | ||
| </div> | ||
| <div className="overflow-hidden rounded-lg border border-border/60 bg-background/35"> |
Comment on lines
+239
to
+242
| const handleCopyTranscript = useCallback(async () => { | ||
| if (!displayText.trim()) { | ||
| toast.error(t("transcription.noTranscript")); | ||
| return; |
Comment on lines
+84
to
+88
| try { | ||
| return `${formatRelativeDistance(date, "zh-CN")}前`; | ||
| } catch { | ||
| return null; | ||
| } |
Comment on lines
+239
to
+242
| const handleCopyTranscript = useCallback(async () => { | ||
| if (!displayText.trim()) { | ||
| toast.error(t("transcription.noTranscript")); | ||
| return; |
Comment on lines
+918
to
+920
| const scheduleProviderActionMessageReset = (provider: SourceProvider) => { | ||
| window.setTimeout(() => setProviderActionMessage(provider, null), 2600); | ||
| }; |
Comment on lines
+103
to
+107
| function getRemoteStatusText(job: ActivityTranscriptionJob) { | ||
| switch (job.remoteStatus) { | ||
| case "queued": | ||
| return "远端队列中"; | ||
| case "converting": |
Comment on lines
+918
to
+920
| const scheduleProviderActionMessageReset = (provider: SourceProvider) => { | ||
| window.setTimeout(() => setProviderActionMessage(provider, null), 2600); | ||
| }; |
Comment on lines
+103
to
+107
| function getRemoteStatusText(job: ActivityTranscriptionJob) { | ||
| switch (job.remoteStatus) { | ||
| case "queued": | ||
| return "远端队列中"; | ||
| case "converting": |
a961f00 to
d4a8803
Compare
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.
变更范围
验证
bun run format-and-lintbun run type-checkbun run testbun run test:coveragebun run build(通过;仍有 Next standalone trace 对.git/fsmonitor--daemon.ipc的非致命 copy warning)PLAYWRIGHT_SKIP_WEBSERVER=1 PLAYWRIGHT_BASE_URL=http://127.0.0.1:3001 PLAYWRIGHT_USE_SYSTEM_CHROME=1 bun run e2e#data-sources深链和固定滚动壳均 PASS。