From 6d593a0ef64ebd2708fa84a71e06475547ba4ce2 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Wed, 11 Mar 2026 16:56:30 -0400 Subject: [PATCH] Move history to sidebar, simplify task assist, add content deduplication MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - VersionHistorySection.vue: new sidebar component — collapsible timestamp list, click any snapshot to see inline diff + Restore/Back; replaces the modal - NoteEditorView: remove History toolbar button + HistoryPanel modal, add VersionHistorySection at bottom of sidebar - TaskEditorView: remove floating overlay assist panel + toggle button; add Writing Assistant section in sidebar matching note editor (scope selector, instruction textarea, generate/proofread/accept/reject); main area now shows streaming preview and DiffView like note editor; add VersionHistorySection - note_versions.py: add content deduplication before time-gap check — identical body + title + tags skips snapshot regardless of interval (git semantics) Co-Authored-By: Claude Sonnet 4.6 --- .../src/components/VersionHistorySection.vue | 258 ++++++++++++++++++ frontend/src/views/NoteEditorView.vue | 36 +-- frontend/src/views/TaskEditorView.vue | 258 ++++++++++-------- src/fabledassistant/services/note_versions.py | 18 +- 4 files changed, 420 insertions(+), 150 deletions(-) create mode 100644 frontend/src/components/VersionHistorySection.vue diff --git a/frontend/src/components/VersionHistorySection.vue b/frontend/src/components/VersionHistorySection.vue new file mode 100644 index 0000000..59c6926 --- /dev/null +++ b/frontend/src/components/VersionHistorySection.vue @@ -0,0 +1,258 @@ + + + + + diff --git a/frontend/src/views/NoteEditorView.vue b/frontend/src/views/NoteEditorView.vue index e664048..3490cf8 100644 --- a/frontend/src/views/NoteEditorView.vue +++ b/frontend/src/views/NoteEditorView.vue @@ -18,7 +18,7 @@ import TagInput from "@/components/TagInput.vue"; import ProjectSelector from "@/components/ProjectSelector.vue"; import MilestoneSelector from "@/components/MilestoneSelector.vue"; import DiffView from "@/components/DiffView.vue"; -import HistoryPanel from "@/components/HistoryPanel.vue"; +import VersionHistorySection from "@/components/VersionHistorySection.vue"; import ConfirmDialog from "@/components/ConfirmDialog.vue"; const route = useRoute(); @@ -35,7 +35,6 @@ const dirty = ref(false); const saving = ref(false); const showPreview = ref(false); const sidebarOpen = ref(true); -const showHistory = ref(false); const editorRef = ref | null>(null); const titleRef = ref(null); const tiptapEditor = computed(() => { @@ -326,7 +325,6 @@ onUnmounted(() => assist.clearSelection()); {{ saving ? "Saving..." : "Save" }} - assist.clearSelection()); + + @@ -527,15 +532,6 @@ onUnmounted(() => assist.clearSelection()); >✨ Assist - - - assist.clearSelection()); letter-spacing: 0.05em; } -/* History button */ -.btn-history { - padding: 0.45rem 1rem; - background: none; - border: 1px solid var(--color-border); - border-radius: var(--radius-sm); - cursor: pointer; - font-size: 0.875rem; - color: var(--color-text-secondary); - font-family: inherit; -} -.btn-history:hover { - border-color: var(--color-primary); - color: var(--color-primary); -} - /* Narrow screen: sidebar collapses */ @media (max-width: 720px) { .note-body { flex-direction: column; overflow-y: auto; overflow-x: hidden; } diff --git a/frontend/src/views/TaskEditorView.vue b/frontend/src/views/TaskEditorView.vue index a9d0f34..871e291 100644 --- a/frontend/src/views/TaskEditorView.vue +++ b/frontend/src/views/TaskEditorView.vue @@ -1,5 +1,5 @@