From e486e863ce77d8abce6b10db06cfef8caca75a44 Mon Sep 17 00:00:00 2001 From: Test Date: Tue, 7 Apr 2026 11:03:50 +0200 Subject: [PATCH] fix: open editor immediately when clicking suggested property slots Previously, clicking a suggested property slot (Status, Date, URL) would add an empty property to frontmatter but fail to open the editor. This was due to a race condition where: 1. handleSuggestedAdd() called onAddProperty() which is async 2. The useEffect tried to detect when the property appeared in frontmatter 3. But frontmatter updates asynchronously after onAddProperty resolves 4. By the time frontmatter is updated, the useEffect had already run The fix is to directly set the editing key immediately when clicking a suggested slot, rather than relying on the useEffect to detect the property being added. This is more reliable because we know we're adding the property - we don't need to wait for it to appear in frontmatter. --- demo-vault-v2/responsive-rename-test-renamed.md | 2 +- demo-vault-v2/untitled-note-1775496473.md | 4 ++++ demo-vault-v2/untitled-note-1775496825.md | 5 +++++ demo-vault-v2/untitled-note-1775497099.md | 7 +++++++ demo-vault-v2/untitled-note-1775541952.md | 4 ++++ demo-vault-v2/untitled-note-1775542285.md | 4 ++++ demo-vault-v2/untitled-note-1775542291.md | 4 ++++ demo-vault-v2/untitled-note-1775542296.md | 4 ++++ demo-vault-v2/untitled-note-1775542431.md | 4 ++++ demo-vault-v2/untitled-note-1775542439.md | 4 ++++ demo-vault-v2/untitled-note-1775542446.md | 4 ++++ demo-vault-v2/untitled-note-1775542459.md | 4 ++++ demo-vault-v2/untitled-note-1775542467.md | 4 ++++ demo-vault-v2/untitled-note-1775542474.md | 4 ++++ demo-vault-v2/untitled-note-1775542676.md | 4 ++++ demo-vault-v2/untitled-note-1775542684.md | 4 ++++ demo-vault-v2/untitled-note-1775542692.md | 4 ++++ demo-vault-v2/untitled-note-1775542700.md | 4 ++++ demo-vault-v2/untitled-note-1775542708.md | 4 ++++ .../untitled-note-1775542716-renamed.md | 7 +++++++ demo-vault-v2/untitled-note-1775542923.md | 4 ++++ demo-vault-v2/untitled-note-1775542931.md | 4 ++++ demo-vault-v2/untitled-note-1775542938.md | 4 ++++ demo-vault-v2/untitled-note-1775542951.md | 4 ++++ demo-vault-v2/untitled-note-1775542959.md | 4 ++++ demo-vault-v2/untitled-note-1775542967.md | 4 ++++ demo-vault-v2/untitled-note-1775542981.md | 7 +++++++ demo-vault-v2/untitled-project-1775497094.md | 15 +++++++++++++++ demo-vault-v2/untitled-project-1775542975.md | 15 +++++++++++++++ src/components/DynamicPropertiesPanel.tsx | 16 ++++------------ 30 files changed, 149 insertions(+), 13 deletions(-) create mode 100644 demo-vault-v2/untitled-note-1775496473.md create mode 100644 demo-vault-v2/untitled-note-1775496825.md create mode 100644 demo-vault-v2/untitled-note-1775497099.md create mode 100644 demo-vault-v2/untitled-note-1775541952.md create mode 100644 demo-vault-v2/untitled-note-1775542285.md create mode 100644 demo-vault-v2/untitled-note-1775542291.md create mode 100644 demo-vault-v2/untitled-note-1775542296.md create mode 100644 demo-vault-v2/untitled-note-1775542431.md create mode 100644 demo-vault-v2/untitled-note-1775542439.md create mode 100644 demo-vault-v2/untitled-note-1775542446.md create mode 100644 demo-vault-v2/untitled-note-1775542459.md create mode 100644 demo-vault-v2/untitled-note-1775542467.md create mode 100644 demo-vault-v2/untitled-note-1775542474.md create mode 100644 demo-vault-v2/untitled-note-1775542676.md create mode 100644 demo-vault-v2/untitled-note-1775542684.md create mode 100644 demo-vault-v2/untitled-note-1775542692.md create mode 100644 demo-vault-v2/untitled-note-1775542700.md create mode 100644 demo-vault-v2/untitled-note-1775542708.md create mode 100644 demo-vault-v2/untitled-note-1775542716-renamed.md create mode 100644 demo-vault-v2/untitled-note-1775542923.md create mode 100644 demo-vault-v2/untitled-note-1775542931.md create mode 100644 demo-vault-v2/untitled-note-1775542938.md create mode 100644 demo-vault-v2/untitled-note-1775542951.md create mode 100644 demo-vault-v2/untitled-note-1775542959.md create mode 100644 demo-vault-v2/untitled-note-1775542967.md create mode 100644 demo-vault-v2/untitled-note-1775542981.md create mode 100644 demo-vault-v2/untitled-project-1775497094.md create mode 100644 demo-vault-v2/untitled-project-1775542975.md diff --git a/demo-vault-v2/responsive-rename-test-renamed.md b/demo-vault-v2/responsive-rename-test-renamed.md index b59b95b1..a7e1922c 100644 --- a/demo-vault-v2/responsive-rename-test-renamed.md +++ b/demo-vault-v2/responsive-rename-test-renamed.md @@ -1,5 +1,5 @@ --- -type: Project +type: Note status: Active --- diff --git a/demo-vault-v2/untitled-note-1775496473.md b/demo-vault-v2/untitled-note-1775496473.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775496473.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775496825.md b/demo-vault-v2/untitled-note-1775496825.md new file mode 100644 index 00000000..ce9b23cb --- /dev/null +++ b/demo-vault-v2/untitled-note-1775496825.md @@ -0,0 +1,5 @@ +--- +type: Note +status: Active +--- +My Custom H1 Heading diff --git a/demo-vault-v2/untitled-note-1775497099.md b/demo-vault-v2/untitled-note-1775497099.md new file mode 100644 index 00000000..6ffd9a23 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775497099.md @@ -0,0 +1,7 @@ +--- +type: Note +status: Active +--- +[[2024-03|March 2024]] + +[[2024-03|March 2024]] diff --git a/demo-vault-v2/untitled-note-1775541952.md b/demo-vault-v2/untitled-note-1775541952.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775541952.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542285.md b/demo-vault-v2/untitled-note-1775542285.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542285.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542291.md b/demo-vault-v2/untitled-note-1775542291.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542291.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542296.md b/demo-vault-v2/untitled-note-1775542296.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542296.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542431.md b/demo-vault-v2/untitled-note-1775542431.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542431.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542439.md b/demo-vault-v2/untitled-note-1775542439.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542439.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542446.md b/demo-vault-v2/untitled-note-1775542446.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542446.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542459.md b/demo-vault-v2/untitled-note-1775542459.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542459.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542467.md b/demo-vault-v2/untitled-note-1775542467.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542467.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542474.md b/demo-vault-v2/untitled-note-1775542474.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542474.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542676.md b/demo-vault-v2/untitled-note-1775542676.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542676.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542684.md b/demo-vault-v2/untitled-note-1775542684.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542684.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542692.md b/demo-vault-v2/untitled-note-1775542692.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542692.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542700.md b/demo-vault-v2/untitled-note-1775542700.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542700.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542708.md b/demo-vault-v2/untitled-note-1775542708.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542708.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542716-renamed.md b/demo-vault-v2/untitled-note-1775542716-renamed.md new file mode 100644 index 00000000..b59b95b1 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542716-renamed.md @@ -0,0 +1,7 @@ +--- +type: Project +status: Active +--- + + +Appended by raw editor test \ No newline at end of file diff --git a/demo-vault-v2/untitled-note-1775542923.md b/demo-vault-v2/untitled-note-1775542923.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542923.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542931.md b/demo-vault-v2/untitled-note-1775542931.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542931.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542938.md b/demo-vault-v2/untitled-note-1775542938.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542938.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542951.md b/demo-vault-v2/untitled-note-1775542951.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542951.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542959.md b/demo-vault-v2/untitled-note-1775542959.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542959.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542967.md b/demo-vault-v2/untitled-note-1775542967.md new file mode 100644 index 00000000..a69dde29 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542967.md @@ -0,0 +1,4 @@ +--- +type: Note +status: Active +--- diff --git a/demo-vault-v2/untitled-note-1775542981.md b/demo-vault-v2/untitled-note-1775542981.md new file mode 100644 index 00000000..6ffd9a23 --- /dev/null +++ b/demo-vault-v2/untitled-note-1775542981.md @@ -0,0 +1,7 @@ +--- +type: Note +status: Active +--- +[[2024-03|March 2024]] + +[[2024-03|March 2024]] diff --git a/demo-vault-v2/untitled-project-1775497094.md b/demo-vault-v2/untitled-project-1775497094.md new file mode 100644 index 00000000..8f781418 --- /dev/null +++ b/demo-vault-v2/untitled-project-1775497094.md @@ -0,0 +1,15 @@ +--- +type: Project +status: Active +--- + +## Objective + + + +## Key Results + + + +## Notes + diff --git a/demo-vault-v2/untitled-project-1775542975.md b/demo-vault-v2/untitled-project-1775542975.md new file mode 100644 index 00000000..8f781418 --- /dev/null +++ b/demo-vault-v2/untitled-project-1775542975.md @@ -0,0 +1,15 @@ +--- +type: Project +status: Active +--- + +## Objective + + + +## Key Results + + + +## Notes + diff --git a/src/components/DynamicPropertiesPanel.tsx b/src/components/DynamicPropertiesPanel.tsx index c149dae7..cde97957 100644 --- a/src/components/DynamicPropertiesPanel.tsx +++ b/src/components/DynamicPropertiesPanel.tsx @@ -1,4 +1,4 @@ -import { useMemo, useCallback, useRef, useEffect } from 'react' +import { useMemo, useCallback } from 'react' import type { VaultEntry } from '../types' import type { FrontmatterValue } from './Inspector' import type { ParsedFrontmatter } from '../utils/frontmatter' @@ -113,20 +113,12 @@ export function DynamicPropertiesPanel({ ? SUGGESTED_PROPERTIES.filter(p => !existingKeys.has(p.toLowerCase())) : [] - const pendingEditKeyRef = useRef(null) - - useEffect(() => { - if (pendingEditKeyRef.current && propertyEntries.some(([k]) => k === pendingEditKeyRef.current)) { - setEditingKey(pendingEditKeyRef.current) - pendingEditKeyRef.current = null - } - }, [propertyEntries, setEditingKey]) - const handleSuggestedAdd = useCallback((key: string) => { if (!onAddProperty) return - pendingEditKeyRef.current = key + // Open the editor immediately - no need to wait for frontmatter to update + setEditingKey(key) onAddProperty(key, '') - }, [onAddProperty]) + }, [onAddProperty, setEditingKey]) return (