From faf926c08149348a77b8b197af000c8d570a61e1 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 11 Oct 2026 07:39:35 +0000 Subject: [PATCH] fix(editor): open existing notes in the user's default note mode Existing notes initialised raw markdown mode from note.checklistMode instead of the defaultNoteMode preference, so users with Markdown as default always got the rich text editor when reopening a note. Fixes #96 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_017neWQAAxi6nZYmwRkDThsy --- src/lib/components/NoteEditor.svelte | 2 +- tests/e2e/settings.spec.ts | 26 +++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/lib/components/NoteEditor.svelte b/src/lib/components/NoteEditor.svelte index 404e79e..829ebfa 100644 --- a/src/lib/components/NoteEditor.svelte +++ b/src/lib/components/NoteEditor.svelte @@ -60,7 +60,7 @@ let showColorPicker = $state(false); let showImageUpload = $state(false); // svelte-ignore state_referenced_locally - let rawMarkdownMode = $state(note ? (note.checklistMode ?? false) : prefs.defaultNoteMode === 'markdown'); + let rawMarkdownMode = $state(prefs.defaultNoteMode === 'markdown'); let textareaEl: HTMLTextAreaElement | undefined = $state(); let tiptapEditor: Editor | undefined = $state(); let editorTick = $state(0); diff --git a/tests/e2e/settings.spec.ts b/tests/e2e/settings.spec.ts index 220b8ae..e5df992 100644 --- a/tests/e2e/settings.spec.ts +++ b/tests/e2e/settings.spec.ts @@ -1,4 +1,4 @@ -import { test, expect } from './helpers/fixtures.js'; +import { test, expect, noteCard } from './helpers/fixtures.js'; import type { Page } from '@playwright/test'; const DEFAULT_PREFS = { @@ -81,6 +81,30 @@ test.describe('Settings — Preferences', () => { await expect(page.getByTestId('note-content-input')).toBeVisible(); }); + test('Scenario: Default note mode applies when reopening an existing note', async ({ + authenticatedPage: page + }) => { + await resetPreferences(page); + + // Given a note titled "Existing Markdown Note" exists + const title = `Existing Markdown Note ${Date.now()}`; + await page.request.post('/api/notes', { data: { title, content: 'Some **bold** text' } }); + + // And the user's default note mode is Markdown + await gotoWithStablePrefs(page, '/settings/preferences'); + const putResponse = page.waitForResponse((res) => res.url().includes('/api/preferences') && res.request().method() === 'PUT'); + await page.getByTestId('pref-mode-markdown').click(); + await putResponse; + + // When the user opens the note + await gotoWithStablePrefs(page, '/'); + await noteCard(page, title).click(); + + // Then the note editor opens in markdown mode showing the raw source + await expect(page.getByTestId('note-content-input')).toBeVisible(); + await expect(page.getByTestId('note-content-input')).toHaveValue('Some **bold** text'); + }); + test('Scenario: Footer toggle hides and shows footer', async ({ authenticatedPage: page }) => {