From d8bbd3fdb9076fb5ddab577ea0fc15a7dd1a2243 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 23 Oct 2025 18:05:22 +0000 Subject: [PATCH] Fix remaining notes bugs: breadcrumb root navigation and line break preservation - Add root breadcrumb item for easy navigation back to notes home - Add onClearActiveFile callback to deselect active file when clicking root - Enable line breaks preservation in markdown (breaks: true) to fix forced line breaks when pasting text - Root breadcrumb now allows users to return to notes tree view Co-authored-by: DeJeune <67425183+DeJeune@users.noreply.github.com> --- src/renderer/src/pages/notes/HeaderNavbar.tsx | 28 ++++++++++++++++--- src/renderer/src/pages/notes/NotesPage.tsx | 5 ++++ src/renderer/src/utils/markdownConverter.ts | 2 +- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/renderer/src/pages/notes/HeaderNavbar.tsx b/src/renderer/src/pages/notes/HeaderNavbar.tsx index 81f5668395..01d72895e5 100644 --- a/src/renderer/src/pages/notes/HeaderNavbar.tsx +++ b/src/renderer/src/pages/notes/HeaderNavbar.tsx @@ -16,7 +16,14 @@ import { menuItems } from './MenuConfig' const logger = loggerService.withContext('HeaderNavbar') -const HeaderNavbar = ({ notesTree, getCurrentNoteContent, onToggleStar, onExpandPath, onRenameNode }) => { +const HeaderNavbar = ({ + notesTree, + getCurrentNoteContent, + onToggleStar, + onExpandPath, + onRenameNode, + onClearActiveFile +}) => { const { showWorkspace, toggleShowWorkspace } = useShowWorkspace() const { activeNode } = useActiveNode(notesTree) const [breadcrumbItems, setBreadcrumbItems] = useState< @@ -54,11 +61,14 @@ const HeaderNavbar = ({ notesTree, getCurrentNoteContent, onToggleStar, onExpand const handleBreadcrumbClick = useCallback( (item: { treePath: string; isFolder: boolean }) => { - if (item.isFolder && onExpandPath) { + if (item.treePath === '/' && onClearActiveFile) { + // Clicking root clears the active file and returns to tree view + onClearActiveFile() + } else if (item.isFolder && onExpandPath) { onExpandPath(item.treePath) } }, - [onExpandPath] + [onExpandPath, onClearActiveFile] ) const handleTitleChange = useCallback((e: React.ChangeEvent) => { @@ -166,8 +176,18 @@ const HeaderNavbar = ({ notesTree, getCurrentNoteContent, onToggleStar, onExpand } }) + // Add root directory as the first breadcrumb item if not already at root + if (pathParts.length > 0) { + items.unshift({ + key: 'root', + title: t('notes.root_directory') || 'Notes', + treePath: '/', + isFolder: true + }) + } + setBreadcrumbItems(items) - }, [activeNode, notesTree]) + }, [activeNode, notesTree, t]) return ( { [notesTree, updateExpandedPaths] ) + const handleClearActiveFile = useCallback(() => { + dispatch(setActiveFilePath(undefined)) + }, [dispatch]) + const getCurrentNoteContent = useCallback(() => { if (settings.defaultEditMode === 'source') { return currentContent @@ -870,6 +874,7 @@ const NotesPage: FC = () => { onToggleStar={handleToggleStar} onExpandPath={handleExpandPath} onRenameNode={handleRenameNode} + onClearActiveFile={handleClearActiveFile} /> ' for single tags (
instead of
) - breaks: false, + breaks: true, // Preserve line breaks when pasting text linkify: false, // Autoconvert URL-like text to links typographer: false // Enable smartypants and other sweet transforms })