From 64c19932a79fcd8d216cd7e3504f672f40dc60e2 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Wed, 8 Apr 2026 13:27:22 -0400 Subject: [PATCH] feat(editor): person form-first layout with structured fields and collapsible notes When note type is 'person', replace the main TipTap editor with a contact card form (Relationship, Birthday, Email, Phone, Organization, Address). The TipTap editor moves to a collapsible 'Notes' section below the form, auto-expanded when existing body content is present. Person fields are removed from the sidebar. Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/views/NoteEditorView.vue | 190 +++++++++++++++++++------- 1 file changed, 142 insertions(+), 48 deletions(-) diff --git a/frontend/src/views/NoteEditorView.vue b/frontend/src/views/NoteEditorView.vue index edf27b5..862cbbc 100644 --- a/frontend/src/views/NoteEditorView.vue +++ b/frontend/src/views/NoteEditorView.vue @@ -38,6 +38,7 @@ const dirty = ref(false); const saving = ref(false); const showPreview = ref(false); const sidebarOpen = ref(true); +const notesExpanded = ref(false); const editorRef = ref | null>(null); const titleRef = ref(null); const tiptapEditor = computed(() => { @@ -228,6 +229,7 @@ onMounted(async () => { milestoneId.value = store.currentNote.milestone_id ?? null; noteType.value = (store.currentNote.note_type as NoteType) || "note"; Object.assign(entityMeta, store.currentNote.metadata || {}); + notesExpanded.value = !!(store.currentNote.body || '').trim(); savedTitle = title.value; savedBody = body.value; savedTags = [...tags.value]; @@ -382,48 +384,96 @@ onUnmounted(() => assist.clearSelection());
-
-
- - + +