feat: add magic note tags and a two-pane notes layout

Keep the notes list beside the open note, compact the detail view with a full-width sticky toolbar, and make Back to overview return to a full-width all-notes grid. Add manual note tags with AND filtering, a tag manager for rename, merge and delete, schema 51 tag tables, and tag support in the note Agent tools.
This commit is contained in:
mesalogo
2026-09-30 19:04:47 +08:00
parent ab85e72f01
commit 6edfc0046b
28 changed files with 2736 additions and 370 deletions
+17 -1
View File
@@ -8,6 +8,8 @@ import {
magicNoteEntryCreateSchema,
magicNoteEntryDeleteSchema,
magicNoteEntryUpdateSchema,
magicNoteTagDeleteSchema,
magicNoteTagRenameSchema,
magicNoteUpdateSchema,
magicTodoUpdateSchema
} from '../../shared/magic-notes-contracts'
@@ -49,7 +51,21 @@ export function registerMagicNotesIpcHandlers(
registerHandler(ipcChannels.magicNotesList, (event) => {
assertTrustedSender(event, window)
return { notes: assistantDatabase.listMagicNotes() }
return {
notes: assistantDatabase.listMagicNotes(),
tags: assistantDatabase.listMagicNoteTags()
}
})
registerHandler(ipcChannels.magicNotesRenameTag, (event, input: unknown) => {
assertTrustedSender(event, window)
return assistantDatabase.renameMagicNoteTag(magicNoteTagRenameSchema.parse(input))
})
registerHandler(ipcChannels.magicNotesDeleteTag, (event, input: unknown) => {
assertTrustedSender(event, window)
const { tagId } = magicNoteTagDeleteSchema.parse(input)
assistantDatabase.deleteMagicNoteTag(tagId)
})
registerHandler(ipcChannels.magicNotesGet, (event, input: unknown) => {