From 0381c692aef02c1297643ba7d4ef8928ae4ee866 Mon Sep 17 00:00:00 2001 From: Spirit of Light Date: Sat, 31 Oct 2026 17:03:22 -0400 Subject: [PATCH] Fix(tui): a new note opens in the editor whatever the default pane mode createNote opened the note with the default pane mode (or the mode remembered for that path) and then entered insert mode. With a preview or split default, you were typing into a buffer the screen didn't show. The new note's tab is now set to edit mode directly, which leaves the default pane mode and the remembered per-note modes unchanged. Co-Authored-By: Claude Opus 5.5 --- internal/tui/newnote_mode_test.go | 22 ++++++++++++++++++++++ internal/tui/noteops.go | 6 ++++++ 2 files changed, 28 insertions(+) create mode 100644 internal/tui/newnote_mode_test.go diff --git a/internal/tui/newnote_mode_test.go b/internal/tui/newnote_mode_test.go new file mode 100644 index 0000000..0d6aceb --- /dev/null +++ b/internal/tui/newnote_mode_test.go @@ -0,0 +1,22 @@ +package tui + +import ( + "testing" + + "github.com/ZenNotes/tui/internal/vault" +) + +// A freshly created note is entered in insert mode, so it must show the +// editor even when the default pane mode is preview. +func TestCreateNoteOpensInEditMode(t *testing.T) { + a, _ := newFeatureTestApp(t) + a.prefs.DefaultPaneMode = string(modePreview) + a.createNote(vault.FolderInbox, "Fresh", "", nil, true) + tb := a.activeTab() + if tb == nil { + t.Fatal("no active tab") + } + if tb.mode != modeEdit { + t.Fatalf("new note opened in mode %q, want edit", tb.mode) + } +} diff --git a/internal/tui/noteops.go b/internal/tui/noteops.go index b013b50..6b8bbfc 100644 --- a/internal/tui/noteops.go +++ b/internal/tui/noteops.go @@ -29,6 +29,12 @@ func (a *App) createNote(folder vault.NoteFolder, title, subpath string, body *s a.addNoteToIndex(meta) if open { a.openNote(meta.Path, true) + // The new note is entered for typing, so show the editor whatever + // the default pane mode is. + if t := a.activeTab(); t != nil && t.view == nil && t.path == meta.Path { + t.mode = modeEdit + a.layout() + } a.withLoadedBuffer(meta.Path, func(buf *noteBuffer) { buf.ed.GotoLine(buf.ed.LineCount()) if a.prefs.VimMode {