新增: 后台任务卡徽章+轮次投影(convRounds), 可恢复分区(parked), reattachToMain i18n 补键(#12)

This commit is contained in:
lxy
2026-10-06 12:13:33 +08:00
parent 70d6e98f82
commit 04db8c0d3b
11 changed files with 250 additions and 32 deletions
+4 -4
View File
@@ -23,7 +23,7 @@ import type { ContentPart, AiMessage, MentionSpan, MessageId } from '@/api/types
import { t } from '@/i18n/i18n-helpers'
import { resetStreamWatchdog, clearStreamWatchdog, clearResumeAttempts } from './useAiStream'
import { setStreaming } from './streamingGuard'
import { startListener } from './useAiEvents'
import { ensureListenerStarted } from './useAiEvents'
import { nextMsgId, startApprovalTimer, clearApprovalTimer, clearAllApprovalTimers, resolveAiLang, convStates, setConvCurrentText, setConvStreaming, flushCurrentText, notifyQueueCleared, classifySendError, type SendErrorKind } from './aiShared'
/// UX-P2-A5:drainQueue 失败气泡的错误分类文案映射(分类逻辑 aiShared.classifySendError,
@@ -117,7 +117,7 @@ async function doSend(text: string, skill?: string, force = false, parts?: Conte
setConvCurrentText(targetConvId, '')
}
await startListener()
await ensureListenerStarted()
const lang = resolveAiLang()
try {
// force=true 走 force_send IPC(复位残留 generating),否则走正常 send
@@ -183,7 +183,7 @@ async function regenerate() {
// 会话态走 per-conv 键(与 doSend 一致),不再落 legacy 单 timer fallback
resetStreamWatchdog(regenConvId || undefined)
await startListener()
await ensureListenerStarted()
const lang = resolveAiLang()
const convId = state.activeConversationId
if (!convId) {
@@ -259,7 +259,7 @@ async function editMessage(newMessage: string) {
// 会话态走 per-conv 键(与 doSend 一致),不再落 legacy 单 timer fallback
resetStreamWatchdog(editConvId || undefined)
await startListener()
await ensureListenerStarted()
const lang = resolveAiLang()
const convId = state.activeConversationId
if (!convId) {