diff --git a/client/src/App.tsx b/client/src/App.tsx index a007891..895dabf 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -18,6 +18,7 @@ import IOPage from "./pages/IOPage"; import VUPage from "./pages/VUPage"; import SelectPage from "./pages/SelectPage"; import AIPage from "./pages/AIPage"; +import CommunityPage from "./pages/CommunityPage"; function AppRouter() { return ( @@ -35,6 +36,7 @@ function AppRouter() { + diff --git a/client/src/components/BottomNav.tsx b/client/src/components/BottomNav.tsx index c3bf0bc..34f4e85 100644 --- a/client/src/components/BottomNav.tsx +++ b/client/src/components/BottomNav.tsx @@ -19,11 +19,10 @@ interface NavItem { path: string; icon: React.ComponentType<{ size?: number; className?: string }>; label: string; - placeholder?: boolean; } const NAV_ITEMS: NavItem[] = [ - { path: "/community", icon: MessageSquare, label: "社区", placeholder: true }, + { path: "/community", icon: MessageSquare, label: "社区" }, { path: "/eq", icon: Sliders, label: "HP-EQ" }, { path: "/", icon: Home, label: "主页" }, { path: "/effects", icon: Activity, label: "Effect" }, @@ -53,7 +52,7 @@ export default function BottomNav() { const Icon = item.icon; return ( - +
{/* Active indicator bar */}
+
+
+
+ +
+

Coming Soon

+

Community features are under development

+
+ +
+ +
+ ); +} diff --git a/client/src/pages/EQPage.tsx b/client/src/pages/EQPage.tsx index eff4d1d..1860c54 100644 --- a/client/src/pages/EQPage.tsx +++ b/client/src/pages/EQPage.tsx @@ -289,12 +289,6 @@ function FreqChart({ onClick={() => toast.info("已复制到 B")}> 复制到 B -
-
{/* SVG chart */} diff --git a/client/src/pages/Home.tsx b/client/src/pages/Home.tsx index 10c2e96..22363ef 100644 --- a/client/src/pages/Home.tsx +++ b/client/src/pages/Home.tsx @@ -46,7 +46,7 @@ type HomeLocale = NonNullable<(typeof localeZh)["home"]>; // ── Volume in dB (0-200 → -100dB to 0dB) ── function volToDB(v: number) { - if (v === 0) return "-∞"; + if (v === 0) return "-100dB"; const db = (v - 200) / 2; return `${db >= 0 ? "+" : ""}${db.toFixed(1)}dB`; } @@ -165,6 +165,12 @@ export default function Home() { const vuLabel = `${homeText.vu ?? "VU表"}${(ds.vu ?? 0) + 1}`; const bypassOn = (ds.dsp_enable ?? 0) === 0; + // Home 的 volume 取值为 0..200,对应 dB = (v - 200) / 2 + // 因此 1 个 volume 单位 = 0.5dB + // AudioPage 的 soundStep:0->0.5dB, 1->1dB, 2->2dB, 3->3dB + // 换算为 volume 单位:0.5/1/2/3 dB -> 1/2/4/6 + const fineVolumeStep = [1, 2, 4, 6][ds.soundStep ?? 1] ?? 1; + // Slider fill % (0-200 → 0-100%) const fillPct = (localVol / 200) * 100; // Knob angle (map 0..200 -> -135..+135 degrees) @@ -369,10 +375,48 @@ export default function Home() {
{/* dB value */} -
+
+ + {volToDB(localVol)} + +
{/* Bluetooth info */}