Skip to content

fix(workflow): Outline 드래그 후 초점이 밀리던 문제 — 정리를 파일 단계로 이동 (0.89.1) - #17

Merged
greendaygh merged 2 commits into
mainfrom
fix/outline-drop-focus
Sep 29, 2026
Merged

greendaygh merged 2 commits into
mainfrom
fix/outline-drop-focus

Conversation

@greendaygh

Copy link
Copy Markdown
Contributor

원인

Obsidian Outline 드래그는 편집기가 아니라 파일을 직접 다시 쓰고(vault.modify), 열린 편집기에는 userEvent: "set" 트랜잭션으로 반영됩니다. 0.89.0의 트랜잭션 필터가 이 set 편집에 --- 정리를 덧붙여 편집기만 줄 수가 바뀌었고, 디스크 기준 캐시 줄 번호로 이동하는 Outline 클릭이 목표 헤딩보다 2~3줄 위에 초점을 잡았습니다.

수정

  • src/unitOpReorderFilter.ts: set 트랜잭션은 건너뜀 (Obsidian 자체 필터와 같은 관례). 모든 문서 변경을 onDocChange(path, fromHistory)로 알림
  • src/outlineDropTidy.ts (신규): Outline 창 드롭 시 경로를 3초 무장하고, 첫 modify에서만 vault.process로 목차·구분선을 정리. 편집기 저장, git pull, 다른 플러그인 쓰기에는 반응하지 않음
  • src/main.ts: 드롭(capture)·modify 연결, undo/redo 직후에는 1.5초 TOC 자동 정렬을 건너뜀
  • README(한/영)·QUICKSTART의 'Ctrl+Z 한 번' 문구 정정 (정리는 별도 저장이라 두 번 필요할 수 있음)

검증

  • npm run typecheck, npm test (557 통과, 신규 6), npm run build, npm run sync:versions -- --check
  • Obsidian 실사용 확인은 배포 후 수동 진행 필요

Made with Cursor

greendaygh and others added 2 commits September 29, 2026 22:09
Outline 드래그는 편집기가 아니라 파일을 직접 다시 쓰고(vault.modify), 편집기에는
userEvent "set" 트랜잭션으로 반영된다. 트랜잭션 필터가 이 set 편집에 구분선 정리를
덧붙여 편집기만 줄 수가 바뀌었고, 디스크 기준 헤딩 위치로 이동하는 Outline 클릭이
2~3줄씩 어긋났다.

- 필터가 set 트랜잭션을 건너뜀 (Obsidian 자체 필터와 같은 관례)
- Outline 창 드롭(capture)으로 경로를 3초 무장하고, 첫 modify에서만 vault.process로
  목차·구분선을 정리해 디스크·캐시·편집기를 일치시킴
- undo/redo 직후에는 1.5초 TOC 자동 정렬을 건너뛰어 되돌리기를 막지 않음
- README(한/영)·QUICKSTART의 'Ctrl+Z 한 번' 문구 정정

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@greendaygh
greendaygh merged commit ebece10 into main Sep 29, 2026
1 check passed
@greendaygh
greendaygh deleted the fix/outline-drop-focus branch September 29, 2026 13:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant