feat: show incomplete Magic Notes todo counts

Magic Notes can now show a default-on incomplete todo badge in the primary
navigation. The badge hides at zero, caps its visual label at 99+ while
retaining the exact accessible count, and refreshes after user or Agent/MCP
note changes.

Platform Features > Magic Notes includes a persistent switch that hides only
the count without changing notes or the Magic Notes entry. Existing settings
migrate with the count enabled.

Release note: 左侧“魔法笔记”入口现在可显示未完成待办数量;可在“平台功能 → 魔法笔记”中关闭,超过 99 项显示“99+”。
This commit is contained in:
mesalogo
2026-08-22 08:32:57 +08:00
parent fee4686750
commit fb51793595
25 changed files with 538 additions and 25 deletions
+14
View File
@@ -107,6 +107,7 @@ import type {
MagicNoteDetail,
MagicNotesSnapshot,
MagicTodoItem,
MagicTodoStatus,
MagicTodoUpdateResult,
MagicTodosSnapshot
} from '../shared/magic-notes-contracts'
@@ -1110,6 +1111,10 @@ const desktopApi: DesktopApi = {
ipcRenderer.invoke(
ipcChannels.magicTodosList
) as Promise<MagicTodosSnapshot>,
getTodoStatus: () =>
ipcRenderer.invoke(
ipcChannels.magicTodosStatus
) as Promise<MagicTodoStatus>,
updateTodo: (input) =>
ipcRenderer.invoke(
ipcChannels.magicTodosUpdate,
@@ -1131,6 +1136,15 @@ const desktopApi: DesktopApi = {
ipcChannels.magicNotesAnalysisEvent,
handler
)
},
onTodoStatusChanged: (listener) => {
const handler = (): void => listener()
ipcRenderer.on(ipcChannels.magicTodosStatusChanged, handler)
return () =>
ipcRenderer.removeListener(
ipcChannels.magicTodosStatusChanged,
handler
)
}
},
knowledge: {