diff --git a/src/renderer/inbox/components/NoteCard.tsx b/src/renderer/inbox/components/NoteCard.tsx index 52934c4..193aa61 100644 --- a/src/renderer/inbox/components/NoteCard.tsx +++ b/src/renderer/inbox/components/NoteCard.tsx @@ -118,6 +118,9 @@ export function NoteCard({ note, onDeleted, onUpdated, mode = 'inbox', onRestore // v0.2.9 Cut B Task 6 — 이동 메뉴 dropdown + MoveStatusModal target. const [moveTarget, setMoveTarget] = useState(null); const [menuOpen, setMenuOpen] = useState(false); + const [editingRaw, setEditingRaw] = useState(false); + const [draftRaw, setDraftRaw] = useState(''); + const [showRevisions, setShowRevisions] = useState(false); const possibleTargets: NoteStatus[] = ( ['active', 'completed', 'archived', 'trashed'] as NoteStatus[] @@ -150,6 +153,17 @@ export function NoteCard({ note, onDeleted, onUpdated, mode = 'inbox', onRestore setLocal(updated); onUpdated(updated); } + async function saveRaw() { + const next = draftRaw; + if (next.trim().length === 0) return; + const r = await inboxApi.updateRawText(note.id, next); + if (!r.ok) return; + const updated = { ...local, rawText: next, updatedAt: new Date().toISOString() }; + setLocal(updated); + onUpdated(updated); + setEditingRaw(false); + } + async function removeTag(tagName: string) { const removed = local.tags.find((t) => t.name === tagName); const nextTagNames = local.tags.filter((t) => t.name !== tagName).map((t) => t.name); @@ -371,9 +385,32 @@ export function NoteCard({ note, onDeleted, onUpdated, mode = 'inbox', onRestore {rawOpen ? '▾ 원문 접기' : '▸ 원문 보기'} {rawOpen && ( -
-            {local.rawText}
-          
+
+ {editingRaw ? ( +
+