dudu MVP:五端语音输入法初始提交
ci / server (push) Failing after 14s
ci / design-tokens (push) Failing after 11s

- server:Go 网关(WS 流式识别中继/计费配额/微信登录支付 mock/反馈/埋点),gummy provider 已真实联调
- desktop:Tauri 2(全局快捷键 push-to-talk/浮层/托盘/设置/登录购买/反馈/首启引导)
- android:Compose 主 App + IME(键盘内录音直传)
- ios:App + 键盘扩展(1A spike 实证键盘内不可录音,走 deep link 听写)
- design/design-pipeline:设计系统 + token 导出 iOS/Android 主题
- doc:前后端设计文档(HTML);web:官网宣传页;todo:任务看板

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-06-12 00:38:37 +08:00
commit 40760aa884
252 changed files with 40789 additions and 0 deletions
+113
View File
@@ -0,0 +1,113 @@
/* ============================================================
dudu 语音输入法 · 颜色令牌
Light 为默认(:root),Dark 通过 [data-theme="dark"] 切换。
简约原则:单一品牌蓝 + 冷灰中性阶梯;绿=录音/成功,
琥珀=超额/警告,红=错误。识别浮层两种模式均为深色玻璃。
============================================================ */
:root {
/* ---- 品牌蓝阶梯 ---- */
--blue-50: #EEF1FE;
--blue-100: #DFE5FD;
--blue-200: #C4CFFB;
--blue-300: #9FB1F9;
--blue-400: #7590F8;
--blue-500: #4F6EF7;
--blue-600: #3D58DB;
--blue-700: #2F44B3;
--blue-800: #25368C;
--blue-900: #1E2B6B;
/* ---- 中性阶梯(冷灰)---- */
--gray-0: #FFFFFF;
--gray-25: #FCFCFD;
--gray-50: #F6F7FA;
--gray-100: #F0F1F4;
--gray-200: #E4E6EB;
--gray-300: #D2D5DD;
--gray-400: #A6ABB8;
--gray-500: #7A8090;
--gray-600: #5A6072;
--gray-700: #434957;
--gray-800: #2B2F3A;
--gray-900: #1B1E26;
--gray-950: #11131A;
/* ---- 功能色 ---- */
--green-500: #16A34A;
--green-100: #DCFCE7;
--amber-500: #E8890C;
--amber-100: #FCEFD7;
--red-500: #DC2626;
--red-100: #FEE2E2;
/* ============ 语义别名 · Light ============ */
--bg-app: var(--gray-50);
--surface-card: var(--gray-0);
--surface-2: var(--gray-100);
--surface-3: var(--gray-200);
--border-1: var(--gray-200);
--border-2: var(--gray-300);
--text-1: var(--gray-900);
--text-2: var(--gray-600);
--text-3: var(--gray-400);
--text-on-accent: #FFFFFF;
--accent: var(--blue-500);
--accent-hover: var(--blue-600);
--accent-press: var(--blue-700);
--accent-soft: var(--blue-50);
--accent-soft-2: var(--blue-100);
--accent-text: var(--blue-600);
--positive: var(--green-500);
--positive-soft: var(--green-100);
--warning: var(--amber-500);
--warning-soft: var(--amber-100);
--danger: var(--red-500);
--danger-soft: var(--red-100);
/* 识别浮层(两种模式均为深色玻璃)*/
--overlay-bg: rgba(24, 26, 34, 0.95);
--overlay-text: #F2F4FA;
--overlay-text-2: #9AA3BD;
--overlay-text-3: #646E8C;
--focus-ring: 0 0 0 3px var(--blue-200);
}
[data-theme="dark"] {
--bg-app: #0F1116;
--surface-card: #171A22;
--surface-2: #1E222C;
--surface-3: #262B37;
--border-1: #272C38;
--border-2: #343A49;
--text-1: #ECEEF4;
--text-2: #9AA1B2;
--text-3: #5F6678;
--text-on-accent: #FFFFFF;
--accent: #5C77E8;
--accent-hover: #6E89F9;
--accent-press: #4A63D6;
--accent-soft: rgba(92, 119, 232, 0.16);
--accent-soft-2: rgba(92, 119, 232, 0.26);
--accent-text: #7D95F7;
--positive: #34C46A;
--positive-soft: rgba(52, 196, 106, 0.16);
--warning: #F2A33C;
--warning-soft: rgba(242, 163, 60, 0.16);
--danger: #F05B5B;
--danger-soft: rgba(240, 91, 91, 0.16);
--overlay-bg: rgba(30, 33, 43, 0.96);
--overlay-text: #F2F4FA;
--overlay-text-2: #9AA3BD;
--overlay-text-3: #646E8C;
--focus-ring: 0 0 0 3px rgba(92, 119, 232, 0.4);
}
+29
View File
@@ -0,0 +1,29 @@
/* ============================================================
dudu · elevation / motion tokens
阴影极轻——简约风靠边框和层级背景色区分层次;
只有浮动元素(浮层、菜单、弹窗)有明显投影。
============================================================ */
:root {
/* elevation */
--shadow-card: 0 1px 3px rgba(17, 19, 26, 0.05);
--shadow-menu: 0 4px 16px rgba(17, 19, 26, 0.10), 0 1px 3px rgba(17, 19, 26, 0.06);
--shadow-window: 0 8px 28px rgba(17, 19, 26, 0.14);
--shadow-overlay: 0 12px 36px rgba(10, 12, 18, 0.38);
--shadow-key: 0 1px 0 rgba(17, 19, 26, 0.22); /* 键帽底边 */
/* motion — 快入慢出,无弹跳 */
--ease-out: cubic-bezier(0.2, 0.8, 0.2, 1); /* @kind other */
--ease-in-out: cubic-bezier(0.45, 0, 0.2, 1); /* @kind other */
--dur-fast: 120ms; /* @kind other */ /* hover、按压 */
--dur-base: 200ms; /* @kind other */ /* 浮层进出、开关 */
--dur-slow: 320ms; /* @kind other */ /* 页面/屏幕切换 */
}
[data-theme="dark"] {
--shadow-card: 0 1px 3px rgba(0, 0, 0, 0.3);
--shadow-menu: 0 4px 16px rgba(0, 0, 0, 0.4), 0 1px 3px rgba(0, 0, 0, 0.3);
--shadow-window: 0 8px 28px rgba(0, 0, 0, 0.5);
--shadow-overlay: 0 12px 36px rgba(0, 0, 0, 0.6);
--shadow-key: 0 1px 0 rgba(0, 0, 0, 0.5);
}
+6
View File
@@ -0,0 +1,6 @@
/* dudu · 品牌字体
OutfitGoogle Fonts CDN)— 圆润几何无衬线,用于品牌拉丁字
"dudu"、数字与价格;中文 UI 文本走系统字体栈(PingFang SC /
MiSans / HarmonyOS Sans / 雅黑)。
注:暂以 CDN 引入;如有自托管字体文件请替换为 @font-face。 */
@import url("https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap");
+33
View File
@@ -0,0 +1,33 @@
/* ============================================================
dudu · 间距 / 圆角 / 控件尺寸令牌
4px 基准网格;圆角偏圆润(呼应圆嘴 logo);
控件高度:桌面紧凑 28/36,移动触控 44/56。
============================================================ */
:root {
/* 间距(4px 网格)*/
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 20px;
--space-6: 24px;
--space-8: 32px;
--space-10: 40px;
--space-12: 48px;
--space-16: 64px;
/* 圆角 */
--radius-xs: 4px; /* kbd、小标签 */
--radius-sm: 6px; /* 按钮、输入框、键帽 */
--radius-md: 10px; /* 菜单、小卡片 */
--radius-lg: 14px; /* 卡片、浮层 */
--radius-xl: 20px; /* 大容器、手机屏 */
--radius-full: 999px;
/* 控件高度 */
--control-sm: 28px; /* 桌面紧凑 */
--control-md: 36px; /* 桌面默认 */
--control-lg: 44px; /* 移动最小触控 */
--control-xl: 56px; /* 移动主操作 / 麦克风条 */
}
+38
View File
@@ -0,0 +1,38 @@
/* ============================================================
dudu · 字体与排版令牌
UI 中文走系统字体(输入法 = 原生应用,跟随系统最自然);
Outfit(圆润几何无衬线)用于拉丁字 "dudu"、数字与价格,
与圆嘴 logo 的线条语言呼应。字重只用 400/500/600/700。
============================================================ */
:root {
--font-sans: 'Outfit', -apple-system, BlinkMacSystemFont, 'PingFang SC',
'MiSans', 'HarmonyOS Sans SC', 'Microsoft YaHei', 'Segoe UI', sans-serif;
--font-mono: ui-monospace, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace;
/* 字号阶梯 */
--text-xs: 12px; /* 角标、键帽 */
--text-sm: 13px; /* 次要信息、菜单 */
--text-base: 14px; /* 桌面正文 */
--text-md: 15px; /* 浮层识别文本、移动正文 */
--text-lg: 17px; /* 区块标题、移动列表 */
--text-xl: 20px; /* 窗口标题 */
--text-2xl: 24px; /* 页面大标题 */
--text-3xl: 32px; /* 价格、大数字 */
--text-4xl: 44px; /* 营销大字 */
/* 字重 */
--weight-regular: 400;
--weight-medium: 500;
--weight-semibold: 600;
--weight-bold: 700;
/* 行高 */
--leading-tight: 1.25;
--leading-normal: 1.5;
--leading-loose: 1.75; /* 中文长文本 */
/* 字距 */
--tracking-normal: 0;
--tracking-wide: 0.02em; /* 品牌字 dudu */
}