Commit Graph

37 Commits

Author SHA1 Message Date
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
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
6b2d34fec4 feat: add organized toggle to breadcrumb bar and command palette
- CheckCircle button in breadcrumb bar toggles _organized property
- Green filled icon when organized, gray outline when not
- Command palette: "Mark as Organized" / "Mark as Unorganized"
- _organized hidden from Properties panel
- Handler follows favorite toggle pattern with optimistic updates

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 20:54:16 +02:00
Test
845181d002 refactor: move vault UI config from ui.config.md to localStorage
Replace the in-vault ui.config.md file with localStorage persistence
keyed by vault path. Vaults now contain only user content — no app
config files. Removes the Rust vault_config module, Tauri commands
(get/save_vault_config), startup migrations, and demo vault config files.

The reactive store (vaultConfigStore) and consumer hooks (useZoom,
useViewMode, useRawMode) are unchanged — only the storage backend moved.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 21:07:38 +01:00
Test
e01403ea10 test: Playwright smoke test for title/filename sync + update docs
- 3 smoke tests: new note title, open note title display, rename atomicity
- Updated ABSTRACTIONS.md: title/filename sync section, title in semantic fields
- Updated ARCHITECTURE.md: title_sync.rs module, sync_note_title command

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 16:59:04 +01:00
Test
d07a592750 Merge remote-tracking branch 'origin/main' into task/image-drop-overlay-fix
# Conflicts:
#	tests/smoke/changing-type-data-corruption.spec.ts
#	tests/smoke/fix-note-filename-on-rename.spec.ts
#	tests/smoke/move-note-to-type-folder.spec.ts
2026-03-17 13:55:34 +01:00
Test
412a1e02c7 fix: resolve demo vault path relative to project root — fix smoke test failures
DEFAULT_VAULTS was hard-coded to the main repo path, causing the Vault API
to read stale/duplicate files when running from worktrees. Now uses Vite's
define to inject the correct path at build time. Also fix theme heading
titles (remove redundant "Theme" suffix) and make smoke tests resilient
to Theme-type notes appearing first in the note list.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 13:14:56 +01:00
Test
85fa0b8680 fix: frontmatter parsing fails when unknown fields have list values
The Frontmatter struct deserialization failed completely when any unknown
field had a list value (e.g. Owner: [Luca], Cadence: [Weekly]) because
serde expected a string but got an array. This caused unwrap_or_default()
to return all-None, losing type/status/archived for ~7000+ notes.

Two fixes:
1. Filter parse_frontmatter input to only known keys, preventing unknown
   fields from causing deserialization failures
2. Change Owner and Cadence to StringOrList to handle both formats
2026-03-16 17:12:58 +01:00
Test
08668854b9 fix: flat vault type resolution — remove type/ prefix from links and protected folders
- Type relationship links: [[type/essay]] → [[essay]] (matches flat vault structure)
- PROTECTED_FOLDERS / KEEP_FOLDERS: only attachments, _themes, assets
- TypeSelector navigation: type/slug → slug
- Updated all 14 affected test files
- All 612 Rust tests + 2151 frontend tests pass
2026-03-16 16:19:24 +01:00
Test
b3126044e8 refactor: flatten vault structure — simplify migration API and flatten demo vault
- Simplify flatten_vault API to return usize instead of MigrationResult struct
- Add KEEP_FOLDERS: attachments/ and _themes/ alongside type/, config/, theme/
- Use HashSet for collision tracking in unique_filename
- Update wikilinks from path-based [[folder/slug]] to title-based [[slug]]
- Clean up empty directories after flattening
- Flatten demo-vault-v2: move all notes from type-based subfolders to root
- Update smoke tests for flat vault structure
- Remove migrate_to_flat_vault from repair_vault (one-time migration only)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 23:40:47 +01:00
Test
5c85bc41f6 test: add Playwright smoke test for exact-match search ranking
Verifies that searching "Writing" in Quick Open shows the exact title
match first, followed by prefix matches. Also adds Refactoring test
entries to mock data and demo vault.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 22:15:08 +01:00
Test
edcb306c7f fix: exclude .laputa-cache.json and settings.json from vault git tracking
These files are machine-specific and should never be committed or cause
conflicts when syncing vaults across devices.

Changes:
- init_repo() now writes .gitignore with .laputa-cache.json and
  .laputa/settings.json excluded before the first commit
- .DS_Store and common editor artifacts also excluded
- openConflictFileRef falls back to openLocalFile() for non-note files
  so 'Open in editor' works for .json conflict files (opens in system
  default app, e.g. TextEdit/VS Code)
- Removed stale git.rs (replaced by git/mod.rs from refactor)
- 2 new Rust tests for .gitignore creation behavior
2026-03-06 15:22:48 +01:00
lucaronin
8454ce7be5 fix: remove vault.rs accidentally restored by cherry-pick
The save-regression cherry-pick (e51bafd) re-introduced the pre-refactor
vault.rs alongside vault/mod.rs, causing E0761 (ambiguous module) on CI.

vault/mod.rs (from PR #21 refactor-vault-rs) is the correct implementation
and already exports all needed functions (save_note_content, get_note_content,
purge_trash, etc.). Removing the duplicate vault.rs resolves the CI failure.
2026-02-24 00:33:20 +01:00
lucaronin
08bcab17c0 feat: leaner note creation — immediate Untitled note, no dialog
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 11:38:03 +01:00
lucaronin
09609eff55 feat: trash notes — sidebar filter, breadcrumb buttons, cmd+del shortcut, demo vault data 2026-02-21 18:34:40 +01:00
lucaronin
3764bbd14b feat: add trashed notes to demo vault
Added 3 trashed notes with trashed_at dates in frontmatter:
- note-old-meeting-notes.md (trashed 2026-02-10)
- note-deprecated-workflow.md (trashed 2026-01-15)
- experiment-failed-podcast.md (trashed 2026-02-05)

These provide realistic test data for the trash feature in the demo vault.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 17:34:35 +01:00
lucaronin
8573e9b35d content: add type documents to demo-vault-v2 (mirrors production vault) 2026-02-21 16:50:58 +01:00
lucaronin
b3e7854b90 content: enrich event notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 12:00:17 +01:00
lucaronin
bf7d5aac32 content: enrich task notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 12:00:12 +01:00
lucaronin
c75da21e6a content: enrich target notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 12:00:12 +01:00
lucaronin
5af3171e99 content: enrich month notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 12:00:06 +01:00
lucaronin
1fa34fe0ff content: enrich year notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 12:00:05 +01:00
lucaronin
b27800fd92 content: enrich quarter notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 12:00:05 +01:00
lucaronin
3bbf4dd15d content: enrich project notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 11:59:59 +01:00
lucaronin
6e5c87f321 content: enrich person notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 11:58:55 +01:00
lucaronin
2dfc69f2e6 content: enrich procedure notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 11:58:54 +01:00
lucaronin
bd7658025c content: enrich note (book) notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 11:58:53 +01:00
lucaronin
2ae9709b4b content: enrich topic notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 11:53:39 +01:00
lucaronin
06ff610bad content: enrich responsibility notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 11:53:39 +01:00
lucaronin
0140ba6613 content: enrich evergreen notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 11:53:39 +01:00
lucaronin
7e2b981a8b content: enrich measure notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 11:52:07 +01:00
lucaronin
1216a19a65 content: enrich goal notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 11:52:07 +01:00
lucaronin
4342a96a70 content: enrich experiment notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 11:52:02 +01:00
lucaronin
ce701372f1 content: enrich area notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 11:42:26 +01:00
lucaronin
b1aa087c5e feat: add generated demo-vault-v2 with 1037 synthetic notes (2 years, Luca/Refactoring persona) 2026-02-20 10:21:34 +01:00