Commits
Shorter feature bullets, key mappings grouped by purpose (find /
write / dailies / ui), commands and API listed in the same order,
the LSP interplay note moved out of the daily-notes section, and
assorted over-explanation trimmed.
When the panel window is focused, nvim_win_close moves focus and
fires BufEnter for the next window synchronously, inside the close
call — so the suppression flag must be set before closing, or the
autocmd still sees the panel as auto-openable and schedules a
reopen. This made q and the toggle appear broken exactly when the
panel had focus.
A single { command, description, action } table now drives both the
user commands and a vim.ui.select palette, so new commands appear in
the palette automatically. All commands take their prompt input as
an optional argument (e.g. :ObsidivimNew My Note).
With info_panel.enabled, pressing q (or toggling off) closed the
panel only for the window switch that followed: focus returning to
the note fired BufEnter, which auto-opened it right back. Track the
explicit close and suppress auto-open until the panel is explicitly
opened again.
Opening the panel from a non-note buffer silently did nothing;
warn like backlinks and rename do. Closing still works from any
buffer.
Pick among notes nothing links to, with preview, to prune or
reconnect them. Daily notes are excluded (rarely linked by design)
and self-links do not count as inbound.
A broken-links companion was considered and dropped: links to notes
that don't exist yet are how the vault is meant to be used (create
on follow), not errors — and they are already visible in-buffer via
the missing-link undercurl.
Backlinks for a non-note buffer always came up empty behind a
misleading "No backlinks found"; say what is actually wrong.
The note-buffer check lived in notes.rename, after the command had
already prompted for the new title; outside a note you were asked
for a name only to be told it would not work. Check first.
A minimal YAML frontmatter reader (plain scalars, quoted strings,
inline arrays, block lists) feeds three fields into the note scan:
- title: overrides the first # heading as the note's title
- aliases: resolve in [[links]] and complete via blink, labelled
with the note they point to; rename leaves alias links untouched
since they remain valid
- tags: count in ObsidivimTags alongside inline #tags
Unterminated frontmatter is treated as content. Notes without
frontmatter behave exactly as before.
Pick a #tag across the vault, then one of its occurrences; a tag
with a single occurrence jumps straight there. Tag matching reuses
the highlighter's rules via a shared links.iter_tags, so the picker
and highlighting always agree on what counts as a tag.
Renames the current note's file (via note_filename), its # heading,
and every [[link]] resolving to it across the vault. Links keep
their addressing style (title, relative path, or filename stem) and
preserve #anchors and |aliases; self-links are rewritten too. Files
open in modified buffers are skipped with a warning rather than
silently diverging from the buffer.
Snippets are markdown files with {{title}}/{{date}}/{{time}} and
{{cursor}} placeholders. default_snippet and daily_snippet (a file
path or the existing fun(title) form, replacing the template option)
are applied when notes are created; snippets_dir + :ObsidivimSnippet
fuzzy-picks a snippet and inserts it at the cursor via a new confirm
override in the picker backend contract.
Note scans now skip hidden directories and snippets_dir, so a
snippets directory inside the notes root stays out of the pickers,
backlinks and completion.
Both implement the same contract as the snacks backend: confirming
opens the selection, and in the find picker enter-on-no-match or
ctrl-x creates a note from the typed query; ctrl-r rescans notes.
The "auto" picker now resolves snacks -> telescope -> fzf-lua ->
vim.ui.select fallback.
Relative paths resolved against the wrong base on tangled (dropping the
repo segment), breaking the click-through links. Point src and href at
the /raw/main/ URLs, which serve the images directly.
Info panel with linked/unlinked mentions and a hover preview, the [[
completion source, and the fuzzy note picker, shown as clickable
thumbnails in a Screenshots section.
External [text](url) links get a configurable marker so they read as
external. Snacks note-picker previews now render wiki/external links and
set conceallevel, matching the editor, and note pickers sort
most-recently-modified first while keeping fuzzy score when searching.
A read-only bottom split shows linked and unlinked mentions of the
current note, follows the focused note window across splits, renders
[[wiki links]] in previews, and jumps to a mention with <CR>/gf/<C-]>.
It sits behind info_panel (default off).
Link resolution now uses a title/path/stem index so backlink scans,
highlighting, and following stay fast on large vaults.
Changelog entries are curated under a "## Unreleased" heading that
release.sh promotes to the version at release time, falling back to
commit subjects when absent.
Wiki links, link-aware highlighting over treesitter markdown, notes and
backlinks pickers with a snacks/vim.ui.select/custom backend split, daily
notes, and a blink.cmp completion source. Config covers filenames,
templates, auto-save, and daily path/title formats.
When the panel window is focused, nvim_win_close moves focus and
fires BufEnter for the next window synchronously, inside the close
call — so the suppression flag must be set before closing, or the
autocmd still sees the panel as auto-openable and schedules a
reopen. This made q and the toggle appear broken exactly when the
panel had focus.
Pick among notes nothing links to, with preview, to prune or
reconnect them. Daily notes are excluded (rarely linked by design)
and self-links do not count as inbound.
A broken-links companion was considered and dropped: links to notes
that don't exist yet are how the vault is meant to be used (create
on follow), not errors — and they are already visible in-buffer via
the missing-link undercurl.
A minimal YAML frontmatter reader (plain scalars, quoted strings,
inline arrays, block lists) feeds three fields into the note scan:
- title: overrides the first # heading as the note's title
- aliases: resolve in [[links]] and complete via blink, labelled
with the note they point to; rename leaves alias links untouched
since they remain valid
- tags: count in ObsidivimTags alongside inline #tags
Unterminated frontmatter is treated as content. Notes without
frontmatter behave exactly as before.
Renames the current note's file (via note_filename), its # heading,
and every [[link]] resolving to it across the vault. Links keep
their addressing style (title, relative path, or filename stem) and
preserve #anchors and |aliases; self-links are rewritten too. Files
open in modified buffers are skipped with a warning rather than
silently diverging from the buffer.
Snippets are markdown files with {{title}}/{{date}}/{{time}} and
{{cursor}} placeholders. default_snippet and daily_snippet (a file
path or the existing fun(title) form, replacing the template option)
are applied when notes are created; snippets_dir + :ObsidivimSnippet
fuzzy-picks a snippet and inserts it at the cursor via a new confirm
override in the picker backend contract.
Note scans now skip hidden directories and snippets_dir, so a
snippets directory inside the notes root stays out of the pickers,
backlinks and completion.
A read-only bottom split shows linked and unlinked mentions of the
current note, follows the focused note window across splits, renders
[[wiki links]] in previews, and jumps to a mention with <CR>/gf/<C-]>.
It sits behind info_panel (default off).
Link resolution now uses a title/path/stem index so backlink scans,
highlighting, and following stay fast on large vaults.
Changelog entries are curated under a "## Unreleased" heading that
release.sh promotes to the version at release time, falling back to
commit subjects when absent.