feat(M4): 细节打磨——可拖拽/缩放 AI 浮窗、弹窗动画、全局快捷键、翻译功能

- AI 助手改为可自由拖拽移动的浮窗(position: fixed,默认右下角)
- 支持 8 方向拖拽缩放(N/S/E/W + 四角),尺寸 280–720 × 320–900px
- 弹窗(ModelSettingsModal、AiResultModal)加入 framer-motion 缩放动画
- App.tsx 注册全局快捷键:Cmd+\ 专注模式、Cmd+Shift+J AI 面板、Cmd+N 新建笔记
- 浮动工具栏新增"翻译成英文"按钮(Languages 图标),流式预览后可替换
- 服务端 buildMessages 增加 translate 分支
- AI 面板 textarea 随输入自动扩展高度(最多 5 行)
- 欢迎页功能一览补充 AI 续写/润色/摘要/问答四卡片及三条快捷键

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
MikiVL
2026-05-03 00:28:01 +08:00
co-authored by Claude Sonnet 4.6
parent d632e9f6f7
commit aa1430d4bf
8 changed files with 249 additions and 78 deletions
+5 -1
View File
@@ -104,7 +104,7 @@ app.delete('/api/models/:id', (c) => {
// ── AI types ──────────────────────────────────────────────────────────────────
type AIStreamRequest = {
type: 'continue' | 'polish' | 'summarize' | 'chat'
type: 'continue' | 'polish' | 'summarize' | 'translate' | 'chat'
noteContent: string
selection?: string
messages?: { role: 'user' | 'assistant'; content: string }[]
@@ -131,6 +131,10 @@ function buildMessages(req: AIStreamRequest): Anthropic.MessageParam[] {
return [{ role: 'user', content: `请润色以下文字,改善语法、流畅度和表达,保持原意,直接输出润色后的结果,不要有任何解释:\n\n${selection ?? noteContent}` }]
}
if (type === 'translate') {
return [{ role: 'user', content: `请将以下文字翻译成英文,保持原文风格和格式,直接输出翻译结果,不要有任何解释:\n\n${selection ?? noteContent}` }]
}
return [{ role: 'user', content: `请为以下内容提炼要点摘要,用简洁的中文输出,不超过 150 字:\n\n${selection ?? noteContent}` }]
}