Commit Graph

1552 Commits

Author SHA1 Message Date
Test
11f2dec3e9 feat: show icons on relationship chips 2026-04-07 22:09:21 +02:00
Test
b54a5a5ad2 fix: allow CodeScene recovery mode 2026-04-07 22:08:51 +02:00
Test
2bc560468d fix: tighten note icon typing v0.20260407.626 2026-04-07 21:11:20 +02:00
Test
66a9127430 feat: add note icon property support 2026-04-07 21:09:06 +02:00
Test
478ed789f8 fix: stop syncing title frontmatter on note open v0.20260407.625 2026-04-07 20:43:13 +02:00
Test
95d75f7a7a fix: avoid duplicate list property drag tab index v0.20260407.624 2026-04-07 20:34:10 +02:00
Test
c56277add0 feat: customize inbox note list columns 2026-04-07 20:31:08 +02:00
Test
8df4730db6 fix: narrow deleted preview active tab path v0.20260407.623 2026-04-07 20:10:13 +02:00
Test
e5f3bae8f3 feat: show deleted notes as restorable changes 2026-04-07 20:09:04 +02:00
Test
1f39501ce5 fix: keep view filter values as plain text v0.20260407.622 2026-04-07 19:40:54 +02:00
Test
10024dbf53 test: slim the pre-push smoke lane v0.20260407.621 2026-04-07 19:22:11 +02:00
Test
e52d07affc chore: enforce main-only workflow and adopt AGENTS.md 2026-04-07 18:42:41 +02:00
Test
0d9af0fb0f chore: ratchet CodeScene thresholds to 9.45/9.29 v0.20260407.620 2026-04-07 18:14:55 +02:00
Test
1ca2662a4b style: satisfy rustfmt pre-push check 2026-04-07 17:52:13 +02:00
Test
eb2758c154 fix: correct editor breadcrumb props typing 2026-04-07 17:49:15 +02:00
Test
7d308a65e0 fix: hide title section for untitled drafts 2026-04-07 17:47:15 +02:00
Test
74850b5b69 docs: rewrite vault AGENTS.md template — vault-agnostic, H1-as-title convention 2026-04-07 16:09:18 +02:00
Test
e486e863ce 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
Test
132618ebd3 docs: add/update ADRs for H1-as-title and Trash removal (guard — from commits 377a3f8d, 7daf6898, e581ad36) 2026-04-07 08:02:31 +02:00
Test
d29d5a03ae chore: restore ui-design.pen (Pencil design file — not stale) v0.20260406.619 2026-04-06 19:27:40 +02:00
Test
084c58fed8 docs: restore VISION.md — product vision, strategy and design principles 2026-04-06 19:26:48 +02:00
Test
63d85bf67f chore: remove remaining stale screenshots 2026-04-06 19:25:03 +02:00
Test
17d67013dc chore: remove stale docs and assets (PROJECT-SPEC, ROADMAP, VISION, Design System Proposal, iPad Prototype, screenshots, untitled notes, prompt.txt, ui-design.pen) 2026-04-06 19:18:15 +02:00
Test
458898f632 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>
v0.20260406.616
2026-04-06 16:31:51 +02:00
Test
89a605262c docs: require completion comment on Todoist task before /laputa-done (QA, refactoring, ADRs, code health) v0.20260406.615 2026-04-06 16:17:19 +02:00
Test
e097c5b717 docs: require pre-task code health check — refactor before feature work if below gate v0.20260406.614 2026-04-06 16:12:58 +02:00
Test
c0df2124ff 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
Test
7f11f3e3ea fix: forbid lowering CodeScene thresholds in CLAUDE.md v0.20260406.613 2026-04-06 15:45:20 +02:00
Test
f02bb68021 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
Test
80914e1e3c style: cargo fmt on mod_tests.rs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
v0.20260406.612
2026-04-06 14:43:56 +02:00
Test
94d07f0d47 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
Test
ef0709a795 fix: don't bake demo-vault-v2 path into CI builds
When CI=true, skip injecting __DEMO_VAULT_PATH__ so the CI runner's
absolute path (/Users/runner/...) is never compiled into the bundle.
The default vault path is resolved at runtime via get_default_vault_path.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 14:31:04 +02:00
Test
eac3b123c4 fix: sanitize gray_matter YAML output to handle unquoted colons and hash comments in list items
gray_matter mis-parses certain YAML patterns common in Notion-imported notes:
- Unquoted colons in list items (`- Bitcoin: Net Unrealized`) become objects
- Hash characters in list items (`- # Heading`) become nulls
These caused serde deserialization of the entire Frontmatter struct to fail,
silently dropping type, _organized, and all other fields (178 affected notes).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 14:21:29 +02:00
Test
25d9da5440 style: cargo fmt
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 13:25:06 +02:00
Test
e366c84b65 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
Test
7daf6898c1 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
Test
377a3f8d0e 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
Test
901326d06f 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
Test
d378e488f1 fix: remove remaining trash navigation command and header title
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
v0.20260406.610
2026-04-06 12:27:15 +02:00
Test
e581ad3691 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
Test
09f7498e86 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>
v0.20260406.609
2026-04-06 10:29:27 +02:00
Test
7443b9a468 fix: show Add button immediately in suggested relationship slots
Remove the collapsed/expanded toggle from SuggestedRelationshipSlot so
the InlineAddNote "Add" button with dashed border is visible without
a click. Also change relationship label font-size from font-mono-overline
(10px) to text-[12px] to match property names in the Inspector.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
v0.20260405.608
2026-04-05 14:59:34 +02:00
Test
12f8fad0f0 fix: align suggested property slots with real properties in Inspector
Add text-left to the suggested property button (browsers default buttons
to text-align: center) and remove text-right from the em-dash placeholder
so both label and value columns match the real property row alignment.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
v0.20260405.607
2026-04-05 14:27:08 +02:00
Test
c90b1d6694 fix: add bottom padding to Favorites list matching top padding
Added paddingBottom: 4 to the expanded Favorites list container,
consistent with the ViewsSection pattern. This creates symmetric
spacing above the first and below the last favorite item.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 14:09:29 +02:00
Test
806b552d47 fix: default sidebar section to Inbox on app launch and vault switch
Changed DEFAULT_SELECTION from 'all' (All Notes) to 'inbox' so the
app always opens on the Inbox section. During a session the user's
navigation is preserved; on next launch or vault switch it resets
to Inbox.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
v0.20260405.606
2026-04-05 13:44:18 +02:00
Test
2cd192fae6 style: apply rustfmt to classify_file_kind tests
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
v0.20260405.605
2026-04-05 13:19:44 +02:00
Test
46106da47a fix: pass forceRawMode through ActiveTabBreadcrumb to BreadcrumbBar
TypeScript error: forceRawMode was set in the props object but not
declared in the ActiveTabBreadcrumb type or forwarded to BreadcrumbBar.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 13:15:11 +02:00
Test
0051559b8e fix: hide Raw toggle for non-markdown files forced into raw editor
Non-markdown text files (.yml, .yaml, .json, etc.) are already forced
into raw editor mode via effectiveRawMode. This hides the Raw toggle
button in the breadcrumb bar for those files since toggling is not
applicable. Adds tests for classify_file_kind and forceRawMode behavior.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 12:59:19 +02:00
Test
3f19528cb6 fix: wikilink filter values now match frontmatter format with alias support
The FilterBuilder autocomplete now stores wikilinks as [[stem|title]]
(e.g., [[monday-112|Monday 112]]) instead of just [[title]]. The view
filter comparison uses wikilinkEquals() to match any combination of
path and alias parts, so [[monday-112|Monday 112]] matches
[[monday-112|Monday #112]] via the shared path "monday-112".

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 12:29:14 +02:00
Test
24e5b537d6 fix: wikilink autocomplete in FilterBuilder no longer clipped by dialog
The dropdown was position:absolute inside a scrollable container with
overflow-y:auto, causing it to be clipped. Now uses createPortal to
render to document.body with position:fixed, escaping the dialog's
overflow. Also adds proper CSS for menu items (font-size 12px, aligned
icon+text, compact padding) via .wikilink-menu--filter modifier.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
v0.20260405.604
2026-04-05 11:58:08 +02:00