- 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
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.
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>
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>
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>
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>
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>
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>
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>
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>
- 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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
- [[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>
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>
- 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>
- 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>
- 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>
- Implement Obsidian/Bear-style live preview via CM6 ViewPlugin + decorations
- Headings: ## markers hidden, text rendered large — revealed on cursor line
- Bold/italic: ** and * markers hidden, text styled — revealed on cursor line
- Links: [text](url) rendered as styled text — revealed on cursor line
- Inline code: backticks hidden, content styled with monospace — revealed on cursor line
- Horizontal rules rendered as styled <hr> elements
- Add Playwright test verifying reveal-on-focus behavior
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Install CM6 packages (state, view, lang-markdown, theme-one-dark, commands, language)
- Replace Editor placeholder with real CodeMirror 6 instance
- Add realistic markdown content to all mock entries in mock-tauri.ts
- Wire up note selection: clicking a note in NoteList loads its content in the editor
- Dark theme matching app colors, line numbers, active line highlighting, line wrapping
- Update NoteList with selected state styling
- Update Playwright screenshot test to capture editor with note selected
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Pill bar below search: All | Projects | Notes | Events | People |
Experiments | Procedures | Responsibilities. Clicking a pill filters
the displayed entries by isA type. "All" resets the filter.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Default sort: last modified descending (pinned entity stays first
in entity view). Search bar at top filters by title substring
(case-insensitive).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- All Notes → show everything
- People/Events filters → show entities of that type
- Section group header → show all entities of that type
- Specific entity → pinned at top with green border + children
- Topic → show entries whose relatedTo references that topic
- Wikilink reference matching (belongsTo/relatedTo → path stem)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Flat list of Topic entities at the bottom of the sidebar,
separated from section groups by a border. Clicking a topic
fires onSelect with kind: 'topic'.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Each section is collapsible with expand/collapse toggle, shows entity count,
and has a + button. Entities are clickable. SidebarSelection type introduced
for managing navigation state across filters, section groups, entities, and topics.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Scaffold Vite + React + TypeScript frontend
- Add Tauri v2 backend with Rust
- Implement list_vault command: recursively scans .md files, parses
YAML frontmatter (Is A, aliases, Belongs to, Related to, Status,
Owner, Cadence), extracts title from H1 or filename
- 10 passing Rust tests for frontmatter parsing and vault scanning
- Configure Vitest and Playwright (test infrastructure)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>