diff --git a/openspec/changes/sidepanel-ux-improvements/tasks.md b/openspec/changes/sidepanel-ux-improvements/tasks.md index 2a5a114..6c08189 100644 --- a/openspec/changes/sidepanel-ux-improvements/tasks.md +++ b/openspec/changes/sidepanel-ux-improvements/tasks.md @@ -7,7 +7,7 @@ ## 2. Caret persistence in the side panel -- [ ] 2.1 In `sidepanel/sidepanel.js`, pass current caret (`selectionStart`/`selectionEnd`) and `scrollTop` to `saveNote` in the existing autosave (`doSave`) +- [x] 2.1 In `sidepanel/sidepanel.js`, pass current caret (`selectionStart`/`selectionEnd`) and `scrollTop` to `saveNote` in the existing autosave (`doSave`) - [ ] 2.2 Track caret-only movement via `document` `selectionchange` (filtered to the editor) and editor `scroll`; debounce ~800ms into a caret-only save that calls `saveNote` without broadcasting; skip it while a content autosave is pending - [ ] 2.3 Flush any pending caret-only save on editor `blur` and on `visibilitychange` → hidden diff --git a/sidepanel/sidepanel.js b/sidepanel/sidepanel.js index fa3d2c7..74e346a 100644 --- a/sidepanel/sidepanel.js +++ b/sidepanel/sidepanel.js @@ -127,7 +127,11 @@ async function doSave() { favIconUrl: tab.favIconUrl || '', }; - const saved = await saveNote(currentKey, editor.value, pageMeta); + const saved = await saveNote(currentKey, editor.value, pageMeta, { + caretStart: editor.selectionStart, + caretEnd: editor.selectionEnd, + scrollTop: editor.scrollTop, + }); currentNote = saved; updateStatus('Saved');