fix: align magic note actions with conversation list menus
Move pin and whole-note deletion into hover and focus menus on note rows. Preserve editor drafts when operating on notes and reuse destructive confirmation with keyboard navigation. Commit the eight affected files in full, including existing application-settings integration and UI design edits in those files. Validation was performed against the shared worktree; unrelated changes remain uncommitted. Release note: 魔法笔记的置顶和删除移至列表项的更多菜单,与会话列表保持一致,并保留未保存的编辑内容。
This commit is contained in:
@@ -1,5 +1,24 @@
|
||||
# Magic Notes Progress
|
||||
|
||||
## 2026-09-17: Note List Action Menu
|
||||
|
||||
- Moved pin/unpin and whole-note deletion from the editor header to each note's
|
||||
action menu, following the [UI design system](../../../UI-DESIGN.md#137-魔法笔记).
|
||||
The menu uses existing update/delete IPC and shared destructive confirmation.
|
||||
- Added regression coverage for menu keyboard behavior, portal placement,
|
||||
dismissal, pin ordering, revision failures, deletion and retained drafts.
|
||||
- The focused Magic Notes suite passed 42 tests. The combined Magic Notes,
|
||||
conversation and shared-primitives suites passed 332 tests. Typecheck and
|
||||
targeted ESLint passed.
|
||||
- Full `npm test`: 370 files and 4,440 tests passed, 2 files and 3 tests failed,
|
||||
9 files and 67 tests skipped. Two heartbeat migration fixtures relabel a current
|
||||
database as an old version and fail on the existing `pinned` column. One
|
||||
OpenCode runtime-reuse request timed out; its two tests passed on isolated rerun.
|
||||
- Full lint reported 22 `document` no-undef errors in the unrelated, untracked
|
||||
`docs/features/story-graph/demo.js`. No unrelated files were changed to resolve
|
||||
these validation failures. Interactive Electron and touch verification remain
|
||||
unperformed.
|
||||
|
||||
## 2026-09-15: Automatic External Refresh
|
||||
|
||||
- Implemented the shared-database notification and Main/preload subscription
|
||||
|
||||
@@ -45,6 +45,22 @@ Read failures use the existing retryable refresh error and retain successful
|
||||
data and drafts. Retry uses the same draft-preserving loader. Interaction rules
|
||||
are owned by [the UI design system](../../../UI-DESIGN.md#137-魔法笔记).
|
||||
|
||||
## Note List Actions
|
||||
|
||||
Each note row has a selection button and a sibling action-menu button. The menu
|
||||
uses the conversation action styles and shared `DestructiveConfirmActions`, and
|
||||
is portalled to `document.body`. Its position follows the trigger on scrolling,
|
||||
window resizing and confirmation-size changes. Hiding the list, filtering out the
|
||||
target or leaving the notes panel closes the menu.
|
||||
|
||||
Pinning uses the target summary's ID and revision through the existing update
|
||||
IPC. It updates the sorted summary and matching selected detail without resetting
|
||||
title, composer or entry-edit drafts. Deleting uses the explicitly confirmed
|
||||
target ID; deleting another note uses the draft-preserving refresh path. Deleting
|
||||
the selected note clears its entry drafts only after the write succeeds, then
|
||||
selects a remaining note. These are renderer changes; database and Agent contracts
|
||||
are unchanged.
|
||||
|
||||
## Agent Search Contract
|
||||
|
||||
`note_search` accepts an integer `limit` from 1 to 100, defaulting to 8.
|
||||
@@ -71,6 +87,8 @@ daemon implementation update.
|
||||
channel, payload-free callback and listener removal.
|
||||
- `MagicNotesWorkspace.test.tsx` covers external updates and deletion, selection,
|
||||
source reload, editor identity and draft saves, coalescing, deferred writes,
|
||||
asynchronous selection races, error retry and unmount cleanup.
|
||||
asynchronous selection races, error retry and unmount cleanup. List-action
|
||||
coverage includes portal placement, keyboard navigation, dismissal, delete
|
||||
confirmation, target selection, revision failures and draft preservation.
|
||||
|
||||
No schema migration, dependency, refresh control or network service is added.
|
||||
|
||||
Reference in New Issue
Block a user