From 8a923a95cf84110cd1dfede1805d965366587290 Mon Sep 17 00:00:00 2001 From: Test Date: Tue, 31 Mar 2026 18:34:44 +0200 Subject: [PATCH] fix: add error handling to createNoteImmediate to prevent crashes Wraps the note creation flow in try-catch so errors in title generation, template resolution, or tab opening are logged to console instead of crashing the app. Co-Authored-By: Claude Opus 4.6 (1M context) --- src/hooks/useNoteCreation.ts | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/hooks/useNoteCreation.ts b/src/hooks/useNoteCreation.ts index 15d2bd02..db582f3a 100644 --- a/src/hooks/useNoteCreation.ts +++ b/src/hooks/useNoteCreation.ts @@ -169,17 +169,21 @@ interface ImmediateCreateDeps { /** Create an untitled note without persisting to disk (deferred save). */ function createNoteImmediate(deps: ImmediateCreateDeps, type?: string): void { - const noteType = type || 'Note' - const title = generateUntitledName(deps.entries, noteType, deps.pendingNames) - deps.pendingNames.add(title) - const template = resolveTemplate(deps.entries, noteType) - const resolved = resolveNewNote(title, noteType, deps.vaultPath, template) - deps.openTabWithContent(resolved.entry, resolved.content) - addEntryWithMock(resolved.entry, resolved.content, deps.addEntry) - deps.trackUnsaved?.(resolved.entry.path) - deps.markContentPending?.(resolved.entry.path, resolved.content) - signalFocusEditor({ selectTitle: true }) - setTimeout(() => deps.pendingNames.delete(title), 500) + try { + const noteType = type || 'Note' + const title = generateUntitledName(deps.entries, noteType, deps.pendingNames) + deps.pendingNames.add(title) + const template = resolveTemplate(deps.entries, noteType) + const resolved = resolveNewNote(title, noteType, deps.vaultPath, template) + deps.openTabWithContent(resolved.entry, resolved.content) + addEntryWithMock(resolved.entry, resolved.content, deps.addEntry) + deps.trackUnsaved?.(resolved.entry.path) + deps.markContentPending?.(resolved.entry.path, resolved.content) + signalFocusEditor({ selectTitle: true }) + setTimeout(() => deps.pendingNames.delete(title), 500) + } catch (err) { + console.error('Failed to create note:', err) + } } interface RelationshipCreateDeps {