Commit Graph

64 Commits

Author SHA1 Message Date
lucaronin
8fc759da99 fix: remove vertical nesting lines for cleaner list appearance 2026-02-16 14:24:15 +01:00
lucaronin
59d1bf8e8e feat: kitchen-sink mock note with all markdown features for visual testing 2026-02-16 14:12:56 +01:00
lucaronin
78fedc92e7 fix: align list nesting vertical lines with bullet center via ::before left offset 2026-02-16 14:07:02 +01:00
lucaronin
00ad997a26 fix: allow all hosts in vite config for tunnel access 2026-02-16 14:04:15 +01:00
lucaronin
94cd8bdcc1 feat: title separator, centered editor, handle spacing, list line alignment 2026-02-16 13:50:21 +01:00
lucaronin
fd021b2c1a fix: side menu handles horizontal layout for better vertical alignment with headings 2026-02-16 09:27:28 +01:00
lucaronin
94936f2f27 fix: override BlockNote default line-height 1.5 on .bn-block-outer with theme value 2026-02-16 09:17:03 +01:00
lucaronin
711f3c7bc4 feat: add bulletGap and checkbox gap controls in theme.json 2026-02-16 08:54:11 +01:00
lucaronin
16f8056991 fix: bullet/checkbox vertical alignment with text line, heading margins on block-outer 2026-02-16 08:52:18 +01:00
lucaronin
6e1a98ad6c fix: heading handle alignment (padding on block-outer), bullet/checkbox/list CSS targeting 2026-02-16 08:33:15 +01:00
lucaronin
6ef354e639 fix: heading margins on .bn-block wrapper so drag handles stay vertically aligned 2026-02-16 08:24:49 +01:00
lucaronin
4c211e09bc fix: editor content survives theme HMR + bullet marker styling + indent control 2026-02-16 08:21:23 +01:00
lucaronin
405d5f39fc feat: comprehensive theme.json config with live hot-reload for editor styling 2026-02-16 08:04:06 +01:00
lucaronin
9afc13811e merge: blocknote-poc into main 2026-02-16 07:55:46 +01:00
lucaronin
9a9769334e feat: proper wiki-links as custom BlockNote inline content with suggestion menu
- Custom 'wikilink' inline content type via createReactInlineContentSpec
- Extended BlockNote schema with wikilink spec
- Suggestion menu triggered by [[ showing all vault entries
- Markdown round-trip: [[target]] → placeholder tokens → wikilink inline content
- Click handler on .wikilink elements for navigation
- Removed old hack (regex preprocessing to wikilink.internal URLs + DOM click interception on <a> tags)
- Added .wikilink CSS styles
- Passed entries prop from App.tsx to Editor for suggestion menu
2026-02-15 19:50:23 +01:00
lucaronin
4284ed3221 fix: working wiki-link click interception via capture-phase handler on container 2026-02-15 19:41:39 +01:00
lucaronin
465e40a6a8 fix: remove href from wikilink anchors to prevent browser navigation, use onclick instead 2026-02-15 19:35:31 +01:00
lucaronin
c3693c94a4 fix: intercept wikilink clicks at document level to prevent browser navigation 2026-02-15 19:32:34 +01:00
lucaronin
0f5b444740 feat: render wiki-links as clickable links in BlockNote editor
Pre-process markdown to convert [[target]] → markdown links with
a wikilink.internal URL before feeding to BlockNote. Click handler
intercepts these links and navigates to the target note.
2026-02-15 19:28:29 +01:00
lucaronin
fdd7a248b2 Editor UX: zero horizontal shift for headings and bullets (Bear-style)
Three CSS fixes for the codemirror-live-markdown live preview:

1. Remove header underlines (border-bottom: none on .cm-heading-line)
2. Heading markers (## etc) positioned absolutely in left gutter area
   so they never push heading text horizontally when revealed
3. List bullets always occupy fixed width (font-size: 1em, not collapsed),
   showing • when inactive and source char (-) when active

Verified via Playwright: 0px horizontal shift on both headings and bullets.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 19:18:08 +01:00
lucaronin
1e95174197 feat: replace CodeMirror 6 with BlockNote editor (PoC)
- Swap CM6 editor with BlockNote block-based editor
- Strip YAML frontmatter before passing to BlockNote, keep separate
- Intercept link clicks for wikilink navigation
- Remove all @codemirror/*, @lezer/*, codemirror-live-markdown deps
- Remove frontmatterHide.ts (no longer needed)
- Update Editor.css: remove .cm-* styles, add BlockNote container styles
- Tab bar, diff toggle, inspector panel unchanged
2026-02-15 19:14:55 +01:00
lucaronin
81fe9418ce Replace custom live preview with codemirror-live-markdown library
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 18:40:33 +01:00
lucaronin
e3dc38e58e Fix tauri.conf.json: remove invalid titleBarStyle overlay 2026-02-15 13:45:24 +01:00
lucaronin
a15982bc37 Add commit and push functionality with dialog
Sidebar shows "Commit & Push" button when uncommitted changes exist.
Clicking opens a commit message dialog. After committing, auto-pushes and
shows success/error toast. Modified files count refreshes after commit.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 13:00:10 +01:00
lucaronin
1eccaf7f76 Add diff view toggle for modified files in editor
Editor tab bar shows Edit/Diff toggle button when viewing a modified file.
Diff view renders git diff output with green (added), red (removed), and
gray (context) line coloring. Uses `get_file_diff` Tauri command.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 12:58:00 +01:00
lucaronin
ab31076464 Add modified files view with Changes filter in sidebar
New "Changes" sidebar filter shows vault-wide uncommitted changes via
`get_modified_files` Tauri command (git status --porcelain). NoteList shows
modified files with M/A/D/? status indicators. Badge on sidebar shows count.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 12:56:28 +01:00
lucaronin
9a15755b53 Add real git revision history to Inspector panel
Replace mock git history with real `git log` data via new `get_file_history`
Tauri command. Adds git.rs module with commands for file history, modified files,
file diff, commit, and push (all registered, later tasks wire up the UI).
Updates GitCommit type to include shortHash field.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 12:54:11 +01:00
lucaronin
023a78ba14 Fix editor light mode + list bullet indentation
BUG 1: Replace all hardcoded dark-mode colors in editorTheme and
livePreviewTheme with CSS variables (--text-heading, --bg-primary,
--accent-blue, etc.) so the editor respects the light/dark toggle.
Remove oneDark theme import — the editor now derives all colors from
the app's CSS variable system.

BUG 2: Fix list indentation by changing .cm-line padding from
shorthand (which reset padding-left to 0) to explicit paddingTop/
paddingBottom, and add !important to list level paddingLeft rules
to win specificity over CodeMirror base styles.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 12:02:28 +01:00
lucaronin
147dac1f34 Fix list indentation with hanging indent for wrapped lines
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 10:38:34 +01:00
lucaronin
b5971c9618 Add light/dark mode toggle with CSS variables
Replace all hardcoded colors across 10 CSS files with CSS variables defined
in index.css. Dark mode (default) uses the existing navy/purple palette,
light mode uses Notion-inspired warm neutrals from the design tokens
(--bg-primary: #FFFFFF, --bg-sidebar: #F7F6F3, --text-primary: #37352F).

Toggle button (sun/moon) in the sidebar header persists preference to
localStorage. An inline script in index.html applies the saved theme
before React mounts to prevent flash.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 10:34:59 +01:00
lucaronin
7e29b2e314 Add grouped relationship display in note list for entity views
When a Project/Responsibility/Procedure/Experiment is selected in the sidebar,
the note list now groups related items by relationship type (Children, Events,
Referenced By, Belongs To, Related To) instead of showing a flat list. The entity
title is shown in the header, type filter pills are hidden, and search works
within groups.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 10:30:13 +01:00
lucaronin
2a841df5ac Editor overhaul: Bear/Obsidian-style live preview
- Headers keep enlarged font size on active line (# marker shown in subtle gray)
- Unordered list "-" rendered as "•" bullet widget
- Clickable checkbox widgets for "- [ ]" / "- [x]" task lists
- Nested list vertical guide lines for indented items
- Improved typography: 15px base, 1.7 line-height, spacious 40px padding
- Softer active line highlight, thicker cursor
- Mock data enriched with checkboxes and nested lists for testing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 10:20:05 +01:00
lucaronin
ba511e4011 Add count badges to filter pills and hide empty types
Each type pill now shows its item count (e.g. "Notes 2"). Pills for types
with zero items are hidden. The "All" pill shows the total count. Counts
are computed from the search-filtered results so they update dynamically.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 10:05:19 +01:00
lucaronin
9d29959fba Add frameless window with custom drag regions (Obsidian-style)
Remove native macOS titlebar via decorations:false + titleBarStyle:overlay.
Add -webkit-app-region:drag to panel headers (Sidebar, NoteList, Editor tab
bar, Inspector) with no-drag on interactive elements. Sidebar header gets
78px left padding for macOS traffic light buttons.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 10:00:29 +01:00
lucaronin
9c49c3eea9 Add comprehensive E2E tests for all core flows (M5 Task 5)
17 new tests covering: open note in editor, sidebar filtering, search,
multiple tabs with switching/closing, inspector properties/relationships/
backlinks/git history, preview snippets, and full create note flow.
Fixed test isolation with workers=1. Total: 44 E2E + 44 unit tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:29:04 +01:00
lucaronin
582e33542d Add comprehensive E2E tests for all core flows (M5 Task 5)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:27:32 +01:00
lucaronin
6d07b7afe3 Refine visual polish: blue accent states, tab hover, editor hints (M5 Task 4)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:26:58 +01:00
lucaronin
82f1be8793 Add visual polish: snippets, dates, colored badges, improved states (M5 Task 4)
Note list items now show preview snippets and relative dates. Type badges
have distinct colors (blue=Project, purple=Responsibility, etc.). Selected
state uses a blue left border. Active pill uses blue highlight. Hover
effects improved across sidebar and note list.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:22:54 +01:00
lucaronin
343b075b07 Add keyboard shortcuts: Cmd+N, Cmd+S, Cmd+W, Cmd+P (M5 Task 3)
Cmd+N opens create note dialog, Cmd+S shows save toast,
Cmd+W closes active tab, Cmd+P opens quick open palette.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:19:38 +01:00
lucaronin
218a13b859 Add quick open palette with fuzzy search (M5 Task 2)
Cmd+P opens a VS Code-style search palette overlay with fuzzy matching
across all note titles. Arrow keys to navigate, Enter to select, Esc to close.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 21:17:38 +01:00
lucaronin
7b9d52d970 Add create note dialog with type selector (M5 Task 1) 2026-02-14 21:14:16 +01:00
lucaronin
2c981a0a30 Add git revision history panel to inspector (M4 Task 4)
Show mock git history per file: commit hash (monospace), relative
date, commit message, author. Added GitCommit type, mock git
history generator, and 'View all revisions' placeholder.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 20:53:52 +01:00
lucaronin
0d03c6a2ae Add backlinks panel to inspector (M4 Task 3)
Scan all vault content for wikilinks referencing the current note
(by title, alias, filename stem, or path). Display backlinks as
clickable links with type badges and count. Added get_all_content
mock handler for content scanning.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 20:50:23 +01:00
lucaronin
a357edf1b2 Add relationships panel to inspector (M4 Task 2)
Show belongsTo and relatedTo from frontmatter as clickable links
that navigate to the referenced note. Empty state when no
relationships exist.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 20:47:19 +01:00
lucaronin
b379e23c8b Add properties panel to inspector (M4 Task 1)
Show selected note metadata: type, status (colored pill), owner,
cadence, modified date, word count (computed from content minus
frontmatter), and placeholder 'Add property' button.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 20:45:42 +01:00
lucaronin
1a2068562a Add clickable wikilinks that navigate between notes
- [[wikilinks]] rendered as styled blue text with brackets hidden
- Brackets revealed when cursor is on the wikilink line (reveal-on-focus)
- Clicking a wikilink opens the linked note in a new tab
- Navigation matches by title or alias (case-insensitive)
- Uses CM6 Facet to pass navigation callback to widget DOM listeners
- Add Playwright test verifying wikilink styling and click navigation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 20:32:37 +01:00
lucaronin
daa7d4d0c1 Add wikilinks: render [[links]] as styled clickable elements
Wikilinks are detected via regex, rendered as styled spans with hidden
brackets, and navigate to the linked note on click. Uses mousedown
instead of click to catch the event before CM6 removes the widget.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 20:30:45 +01:00
lucaronin
f3b6b4ed4a Hide YAML frontmatter from editor view
- Add frontmatterHide extension that hides --- ... --- block at top of files
- Shows collapsed --- indicator, reveals on cursor focus
- Place initial cursor after frontmatter so content is visible on load
- Remove frontmatter detection from livePreview (handled by dedicated extension)
- Add Playwright test for frontmatter hiding

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 20:25:02 +01:00
lucaronin
94530e9161 Hide YAML frontmatter in editor, reveal on cursor entry
- Add frontmatterHide extension using CM6 StateField for cross-line replacement
- Frontmatter (--- ... ---) collapsed to small "---" indicator when cursor is outside
- Cursor entering the frontmatter block reveals full YAML content
- Editor places cursor after frontmatter on note load so it starts hidden
- Add Playwright test verifying frontmatter is hidden by default

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 20:24:57 +01:00
lucaronin
eb87c0d223 Add tab bar with open/close/switch for multi-note editing
- Replace single selectedNote with tabs state in App (open/close/switch)
- Tab bar above editor: title + x close button, active tab highlighted
- Clicking note opens new tab or switches to existing
- Closing active tab switches to adjacent tab
- Fix race condition: editor re-creates when tab content loads async
- Add Playwright test verifying multi-tab behavior

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 20:15:44 +01:00