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
+9
View File
@@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" width="96" height="96" viewBox="0 0 96 96" fill="none">
<rect width="96" height="96" rx="22" fill="#11131A"></rect>
<g stroke="#7590F8" stroke-width="7" stroke-linecap="round">
<circle cx="48" cy="48" r="33"></circle>
<path d="M35 41.5v13"></path>
<path d="M48 34v28"></path>
<path d="M61 41.5v13"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 379 B

+9
View File
@@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" width="96" height="96" viewBox="0 0 96 96" fill="none">
<rect width="96" height="96" rx="22" fill="#4F6EF7"></rect>
<g stroke="#FFFFFF" stroke-width="7" stroke-linecap="round">
<circle cx="48" cy="48" r="33"></circle>
<path d="M35 41.5v13"></path>
<path d="M48 34v28"></path>
<path d="M61 41.5v13"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 379 B

+6
View File
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" fill="none" stroke="#4F6EF7" stroke-width="3.5" stroke-linecap="round">
<circle cx="24" cy="24" r="18"></circle>
<path d="M17 20.5v7"></path>
<path d="M24 16.5v15"></path>
<path d="M31 20.5v7"></path>
</svg>

After

Width:  |  Height:  |  Size: 275 B

+6
View File
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" fill="none" stroke="#1B1E26" stroke-width="3.5" stroke-linecap="round">
<circle cx="24" cy="24" r="18"></circle>
<path d="M17 20.5v7"></path>
<path d="M24 16.5v15"></path>
<path d="M31 20.5v7"></path>
</svg>

After

Width:  |  Height:  |  Size: 275 B

+6
View File
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" fill="none" stroke="#FFFFFF" stroke-width="3.5" stroke-linecap="round">
<circle cx="24" cy="24" r="18"></circle>
<path d="M17 20.5v7"></path>
<path d="M24 16.5v15"></path>
<path d="M31 20.5v7"></path>
</svg>

After

Width:  |  Height:  |  Size: 275 B

+6
View File
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="3.5" stroke-linecap="round">
<circle cx="24" cy="24" r="18"></circle>
<path d="M17 20.5v7"></path>
<path d="M24 16.5v15"></path>
<path d="M31 20.5v7"></path>
</svg>

After

Width:  |  Height:  |  Size: 280 B

+12
View File
@@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 152 52" fill="none" stroke="currentColor" stroke-width="4" stroke-linecap="round">
<circle cx="18" cy="32" r="14"></circle>
<path d="M32 6v40"></path>
<path d="M42 18v14a14 14 0 0 0 28 0V18"></path>
<circle cx="94" cy="32" r="14"></circle>
<path d="M108 6v40"></path>
<path d="M118 18v14a14 14 0 0 0 28 0V18"></path>
</svg>

After

Width:  |  Height:  |  Size: 400 B