Skip to content

feat(docs): S-DOCS1 v2 — Notion-style always-editable + autosave#246

Merged
AngryJay91 merged 2 commits intomainfrom
feat/SID-E036-DOCS1v2-always-editable-autosave
Apr 15, 2026
Merged

feat(docs): S-DOCS1 v2 — Notion-style always-editable + autosave#246
AngryJay91 merged 2 commits intomainfrom
feat/SID-E036-DOCS1v2-always-editable-autosave

Conversation

@AngryJay91
Copy link
Copy Markdown
Contributor

Summary

  • 모드 토글 완전 제거: editing state, Edit/Save/Cancel 버튼, 클릭 진입 로직 전부 삭제
  • 항상 tiptap 마운트: DocEditor 단일 인스턴스를 항상 렌더. editable prop 추가 (권한 기반)
  • Autosave: useDocSync 1500ms debounce 재사용. editing 게이트 = selectedDoc !== null (항상 활성)
  • 저장 상태 인디케이터: 헤더 우측에 Saving… / Saved / Unsaved changes / Save failed / Conflict / Remote-changed
  • 제목 inline 편집: 항상 <Input> (heading ↔ input 조건부 렌더 제거)
  • page-old.tsx callsite: 제거된 props (mode, onModeChange, editorMode label) 정리

Files changed

File Change
docs-shell-client.tsx Major refactor — ~140 lines 순감
doc-editor.tsx editable prop 추가, mode toggle 제거
docs-shell-client.test.tsx 8 tests (new)
page-old.tsx Removed deleted props

Test plan

  • pnpm test docs-shell-client → 8/8 pass
  • pnpm tsc --noEmit → 0 errors
  • Doc 선택 시 tiptap 즉시 편집 가능
  • 타이핑 1.5초 후 자동저장 — Saving… → Saved
  • 다른 doc 선택 시 이전 내용 플러시 (cursor jump 없음)
  • Title 수정 → 1.5초 후 tree에 반영

🤖 Generated with Claude Code

- Remove editing mode toggle (editing state, Edit/Save/Cancel buttons, click-to-edit)
- Always mount DocEditor as single tiptap instance; editable prop is permission-based
- Wire useDocSync debounce autosave (1500ms) via always-on editing gate (selectedDoc !== null)
- Add SaveStatusIndicator: shows Saving/Saved/Unsaved/Error/Conflict/Remote-changed
- Title always rendered as <Input> (no heading-vs-input conditional)
- Export getDocSaveStatusText pure helper for unit tests (8 tests, all pass)
- Drop removed props (mode, onModeChange) from DocEditor; fix page-old.tsx callsite

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel bot commented Apr 15, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
sprintable Ready Ready Preview, Comment Apr 15, 2026 11:32am

- Extract createAutosaveScheduler pure factory from useDocSync (exported for tests)
- Add use-doc-sync.test.ts: 6 fake-timer tests covering debounce coalescing + PATCH mock
  (AC 7: "tiptap onUpdate → debounce → PATCH" & "빠른 연속 입력 1회 병합")
- Fix handleRename double-save: parse full PATCH response and setSelectedDoc(data) so
  updated_at propagates to useDocSync → resets lastSavedSnapshot → no spurious autosave
- Add TODO comment on editable={true} for future RBAC integration point

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@AngryJay91 AngryJay91 merged commit 90a56d4 into main Apr 15, 2026
3 of 4 checks passed
@AngryJay91 AngryJay91 deleted the feat/SID-E036-DOCS1v2-always-editable-autosave branch April 15, 2026 11:47
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