Commit Graph

916 Commits

Author SHA1 Message Date
lucaronin
cb2e28f3d9 fix: hide legacy title chrome for frontmatter titles 2026-04-09 12:51:06 +02:00
lucaronin
d13e181658 fix: narrow pending tab swap target path 2026-04-09 12:38:39 +02:00
lucaronin
4634949f71 fix: swap note content after pending navigation 2026-04-09 12:36:09 +02:00
lucaronin
90fbe82bca fix: hide stale title chrome while notes load 2026-04-09 12:20:03 +02:00
lucaronin
64e923ac5f fix: type property chip icon helper 2026-04-09 12:08:31 +02:00
lucaronin
3ac2326d05 fix: restore built-in relationship chip icons 2026-04-09 12:05:55 +02:00
lucaronin
21ad9ad505 fix: unclip view filter field combobox 2026-04-09 11:48:26 +02:00
lucaronin
8b4ab4a9cc feat: preview relative date filters 2026-04-08 21:44:20 +02:00
lucaronin
680a56104d feat: enhance note list property chips 2026-04-08 21:28:28 +02:00
lucaronin
cffac2881a feat: add searchable filter field combobox 2026-04-08 21:15:49 +02:00
lucaronin
c3a9400f35 fix: make AI panel shortcut command-only 2026-04-08 21:05:16 +02:00
lucaronin
3feb167b12 fix: surface status in note list chip picker 2026-04-08 20:56:12 +02:00
lucaronin
459145ba0d fix: improve note icon property editing 2026-04-08 20:40:14 +02:00
lucaronin
24f6a014dc fix: hide legacy title section for H1 notes 2026-04-08 20:17:51 +02:00
lucaronin
429aba7ae7 fix: use h1 titles for displayed note names 2026-04-08 19:46:16 +02:00
lucaronin
5c5d40ff24 fix: require cmd-click for editor links 2026-04-08 19:06:21 +02:00
lucaronin
528c711e68 fix: narrow commit url before opening 2026-04-08 14:11:59 +02:00
lucaronin
90785440a0 refactor: improve CodeScene hotspot health 2026-04-08 14:01:19 +02:00
lucaronin
616952bdaa test: stabilize smoke lane and timer-heavy tests 2026-04-08 10:22:47 +02:00
lucaronin
f66c8cf8ca fix: stabilize note list hotspots 2026-04-08 09:18:59 +02:00
lucaronin
8141b8fc8c refactor: split note list hotspots 2026-04-08 09:03:02 +02:00
lucaronin
ef4a51202c feat: clone the starter vault on demand 2026-04-07 23:28:02 +02:00
lucaronin
037fd39c95 feat: support relative date view filters 2026-04-07 23:02:55 +02:00
lucaronin
b0b6a4f4cd feat: add regex mode for view filters 2026-04-07 22:51:23 +02:00
lucaronin
63eedbdb91 fix: clear missing active vault paths 2026-04-07 22:35:04 +02:00
lucaronin
b674d20a05 fix: stop writing empty suggested properties 2026-04-07 22:34:33 +02:00
lucaronin
f00eb652c1 fix: tighten relationship chip typing 2026-04-07 22:12:15 +02:00
lucaronin
927aa5c73c feat: show icons on relationship chips 2026-04-07 22:09:21 +02:00
lucaronin
7e48b81f30 fix: tighten note icon typing 2026-04-07 21:11:20 +02:00
lucaronin
771409d30b feat: add note icon property support 2026-04-07 21:09:06 +02:00
lucaronin
2eb8e02061 fix: stop syncing title frontmatter on note open 2026-04-07 20:43:13 +02:00
lucaronin
31e41e869a fix: avoid duplicate list property drag tab index 2026-04-07 20:34:10 +02:00
lucaronin
9cc3bcf758 feat: customize inbox note list columns 2026-04-07 20:31:08 +02:00
lucaronin
6c67b39ae5 fix: narrow deleted preview active tab path 2026-04-07 20:10:13 +02:00
lucaronin
8218bcf558 feat: show deleted notes as restorable changes 2026-04-07 20:09:04 +02:00
lucaronin
59205c4012 fix: keep view filter values as plain text 2026-04-07 19:40:54 +02:00
lucaronin
6a02317294 fix: correct editor breadcrumb props typing 2026-04-07 17:49:15 +02:00
lucaronin
a12b3503e4 fix: hide title section for untitled drafts 2026-04-07 17:47:15 +02:00
lucaronin
4a4ce4a402 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.
2026-04-07 11:03:50 +02:00
lucaronin
ceda8abe5d fix: suggested property slots now reliably open editor after click
Replace setTimeout-based editingKey activation with a useEffect that
watches propertyEntries. When the newly added property appears in
propertyEntries (after the async backend write completes), the effect
sets editingKey, ensuring the editor/picker opens regardless of timing.

The old setTimeout(fn, 0) approach raced with the async frontmatter
write — editingKey was set before the property existed in the DOM,
so the editing state had no matching PropertyRow to activate.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:31:51 +02:00
lucaronin
8b98e77680 fix: sync custom properties to VaultEntry on frontmatter changes
View filters that reference custom properties (e.g. "Trashed", "Priority")
were not reactively updating because contentToEntryPatch and
frontmatterToEntryPatch only synced known fields (type, status, etc.)
to the VaultEntry. Custom frontmatter keys were silently dropped.

Now frontmatterToEntryPatch produces a propertiesPatch for unknown keys,
and contentToEntryPatch includes them in the properties field. This
ensures evaluateView sees up-to-date custom property values when
re-filtering the note list.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:10:02 +02:00
lucaronin
f756e6a831 feat: add note count chips to sidebar view entries
Each view in the sidebar now shows a count chip displaying the number of
notes matching its filters, consistent with type section count chips.
Count updates reactively as vault entries change.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 15:29:54 +02:00
lucaronin
3411f4e817 fix: stabilize flaky SearchPanel keyboard tests with act() wrapping
Wrap fireEvent.keyDown calls in act() and assertions in waitFor() so
React state updates flush before checking side effects.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 14:41:59 +02:00
lucaronin
d284befd5f fix: add hasH1 to mock entries for build compatibility
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 13:22:38 +02:00
lucaronin
9c87eca226 feat: auto-rename untitled notes + Rust title resolution tests
- Add auto_rename_untitled Rust command: one-shot rename of untitled-*
  files based on H1 heading, with collision handling (-2, -3)
- Wire auto-rename into frontend save flow (useAppSave.ts)
- Update Rust tests: extract_title now uses H1 > frontmatter > filename
- Add extract_h1_title tests

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 13:14:43 +02:00
lucaronin
d50f3479dc feat: H1-as-title — title resolution, TitleField hiding, breadcrumb filename
- Rust: extract_title now prioritizes H1 > frontmatter > filename
- Rust: add has_h1 field to VaultEntry for frontend TitleField control
- Frontend: hide TitleField + icon picker when note has H1 in body
- Frontend: breadcrumb shows filename stem instead of display title
- Frontend: new notes use untitled-{type}-{timestamp}.md, no title in frontmatter
- CSS: only hide first H1 in BlockNote when TitleField is visible
- Updated all tests for new title resolution and note creation behavior

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 13:08:17 +02:00
lucaronin
0b58fd6061 fix: change AI panel shortcut from Cmd+Option+I to Cmd+Shift+L
The previous shortcut (Cmd+Option+I) conflicted with the editor's
italics shortcut (Cmd+I) on some keyboard layouts. Cmd+Shift+L has
no conflicts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 12:52:25 +02:00
lucaronin
0c5db9ebea fix: remove remaining trash navigation command and header title
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 12:27:15 +02:00
lucaronin
d0c3a6b889 refactor: remove Trash system — delete is now permanent with confirm modal
Remove all vestiges of the abandoned Trash system: trashed/trashedAt fields
from types, frontmatter parsing, sidebar filtering, editor banners, inspector
components, mock data, and all related tests. Delete is already permanent via
useDeleteActions with a confirmation dialog. Notes with trashed:true in
existing vault frontmatter are now treated as normal notes (the flag is
ignored by the parser).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 12:21:56 +02:00
lucaronin
53072eb4f3 fix: Cmd+Option+arrow navigation now follows the visible note list order
The keyboard navigation was computing its own note list with hardcoded
sortByModified, which didn't match the actual UI order (Inbox sorts by
createdAt, custom types use configurable sorts, etc.). Now the NoteList
component writes its sorted list to a shared ref that the navigation
hook reads directly, ensuring navigation always matches visual order.

Also fixes navigation not wrapping at list boundaries per spec.

Syncs CodeScene thresholds with current remote scores.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 10:29:27 +02:00