Repository navigation
feat: calmer writing — ⌘K search, focus mode, ghost links, mycelium margin - #65
Merged
Merged
Conversation
Notes read as prose, not code; the numbered gutter was noise while writing. Removes lineNumbers + the active-line gutter highlight and their theme rules. The database widget's gutter markers stay — they are inert without a gutter. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FQ4Dmz33k37eT3Eeiv9v6f
|
|
Opening a note from the tree drew a hypha arcing from the row to the top of the editor. Remove it (and the now-unused reach() helper and data-spore-target hook); the note still fades in. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FQ4Dmz33k37eT3Eeiv9v6f
QuickSwitcher now lists notes (by name and meaning) and matching commands together; a leading '>' narrows it to commands. ⌘P opens the same box in command mode, ⌘O on notes, and the new ⌘K is the default entry point. The toolbar trigger says what it does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FQ4Dmz33k37eT3Eeiv9v6f
- Note text sits in a centred ~70-character column (Settings → Readable line width; also a palette command). - Focus mode hides every bit of chrome — toolbar, sidebars, tabs, status bar, the note's path bar — and dims everything but the paragraph being written. A small pill says how to leave; it shows on entry and when the pointer nears the top edge. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FQ4Dmz33k37eT3Eeiv9v6f
While typing, if the words before the cursor begin an existing note's title (or alias), the rest of the title shows as faint text after the cursor with a small 'Tab → link' hint. Tab replaces the typed words with [[Title]]; Esc or moving the cursor dismisses it. Local, no AI needed. Pure matcher in lib/ghost-link.ts (unit tested): 4+ characters, starts on a word boundary, may span words, never inside [[…]] or inline code, never the note being edited, shortest completing title wins. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FQ4Dmz33k37eT3Eeiv9v6f
A quiet corner list ('Grows toward') of up to three notes close in
meaning to the one being written that it does not link to yet. Click
inserts [[Title]] at the cursor; Cmd/Ctrl-click opens the note. Exists
only when semantic search does; refreshes on open and ~9 s after typing
stops (after autosave + the indexer's debounce). Hidden in focus mode.
Edits reach it through a subscription, not React state, so typing never
re-renders the editor component.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FQ4Dmz33k37eT3Eeiv9v6f
- Note header: a borderless 'folder › note' breadcrumb instead of the bordered bar with the monospace path; Present / Insert database become icons that appear on hover; the Save button goes (autosave writes on its own, ⌘S still saves and pins). - Toolbar: drop the separate full-text search button — it lives in ⌘K and on ⌘⇧F. - No hairlines under the toolbar or above the status bar. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FQ4Dmz33k37eT3Eeiv9v6f
There were two search windows: the switcher in the middle of the toolbar
and the separate full-text panel (⌘⇧F). Now there is one. The ⌘K box
also queries search_fulltext and fuses its hits with name and meaning
matches; a note found by its words shows the matching line, highlighted,
and Enter opens it at that line. The query operators ("phrase", -word,
OR, path:, file:, tag:) are listed in the box's footer. ⌘⇧F opens the
same box; the old FullTextSearch panel and its store flag are gone.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FQ4Dmz33k37eT3Eeiv9v6f
kodinkod
marked this pull request as ready for review
October 2, 2026 22:11
4 of 12 tasks
kodinkod
pushed a commit
that referenced
this pull request
Oct 2, 2026
Resolve against #65/#67: full-text search now lives in the ⌘K box, so its overlay state is gone from the UI store and App.tsx; keep the local graph overlay state next to the new focus-mode flag. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VeZRNKkbb6GoBgqmhLyqN8
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR follows a design-trends review: calm interfaces, keyboard-first, AI inside the text rather than in a chat. Each part is its own commit.
>limits the list to commands. The query operators ("phrase",-word,OR,path:,file:,tag:) are listed in the footer.[[Title]]; Esc dismisses it. The matcher is pure and unit tested.folder › notebreadcrumb.Related issues
Follow-up to #60 and #64.
Type of change
How was this tested?
npm run lintpasses (0 errors; the 5 warnings were already there)npm run buildpasses, andnpm testpasses (154/154, including 9 new ghost-link matcher tests)cargo fmt --check && cargo clippy --all-targets -- -D warningspass (no Rust changes)cargo testpasses (no Rust changes)Manually exercised in Chromium with a mocked Tauri backend:
[[Machine learning]];Still needs a check in the real Tauri app.
Screenshots / recordings
Captured locally: the unified search with a full-text hit, the reading column, focus mode, the ghost link, the margin, and the simplified header.
Contributor License Agreement
🤖 Generated with Claude Code
https://claude.ai/code/session_01FQ4Dmz33k37eT3Eeiv9v6f