Wiki links now stay accurate as your notes change: backlinks, references and inlay hints in the editor follow [[Name]] links to notes you create, move or delete without having to touch the linking note. Renaming a note is also much less noisy — [[Name]] links are kept as written when they still resolve, otherwise the shortest working name is used, and links that would accidentally start pointing at the renamed note are fixed up.
iwe
Changed
renamekeeps[[Name]]links as they are when a note moves to another folder under the same file name, and otherwise writes the shortest name that resolves (previously every link was rewritten to the full path)renamerewrites a[[Name]]link to another note that would otherwise start pointing at the renamed note, so it keeps its target
iwes
Added
workspace/inlayHint/refreshis sent when a document is created or removed
Changed
- Backlinks, references and inlay hints follow wiki links to notes created, moved or removed after the linking note was opened (previously stale until the linking note was edited)
- Rename sends no edits for notes whose wiki links still point at the moved note, and rewritten wiki links use the shortest name that resolves (was the full path)
- Rename rewrites a
[[Name]]link to another note that would otherwise start pointing at the renamed note, so it keeps its target
iwec
Changed
iwe_renamekeeps[[Name]]links as they are when a note moves to another folder under the same file name, and otherwise writes the shortest name that resolves (previously every link was rewritten to the full path)iwe_renamerewrites a[[Name]]link to another note that would otherwise start pointing at the renamed note, so it keeps its target
Library crates (liwe, diwe)
liwe
Added
liwe::initmodule with the workspace scan, notes folder detection, environment probe and settings detection used byiwe initliwe::fs::walk_md_pathsto list the documents under a directory, honoring.gitignoreTargettype for what a link points at: a document key for regular links, the name as written for wiki linksKeyIndex::target_key,KeyIndex::resolve,KeyIndex::bucket,KeyIndex::name_bucket,KeyIndex::containsandKeyRenamefor resolving and renaming link targetsGraph::target_key,Graph::resolve,Graph::reference_target_key,Graph::get_wiki_edges_named_likeandGraphNode::targets
Changed
- Wiki links are resolved against the current documents every time they are read, so creating, moving or removing a note updates backlinks and edges without re-reading the notes that link to it (previously resolved once, when the linking note was parsed)
ReferenceandGraphNode::Referencehold atarget: Target(waskeyandurl);Reference::plainandGraphBuilder::reference_with_inlinestake aTargetInline::ref_keys,Line::ref_keys,GraphNode::ref_key,NodePointer::ref_key,Node::reference_key,Tree::get_all_inclusion_edge_keysandTree::find_reference_keyreturn targets instead of keys and are renamed accordingly;NodePointergainsto_targetTree::change_keyandInline::change_keyare replaced byrewrite_targets, which also reaches links inside link text and imagesTree::remove_inclusion_edges_toandTree::remove_inline_links_totake a predicate over targets, andTree::annotate_referenceslooks parents up by targetInlinesContext::wiki_displaytakes a&Target(was a key and the written url)to_graph_inlines,DocumentInline::to_graph_inlineandSectionsBuilder::newno longer take aKeyIndexoperations::references,operations::select_referenceandBlockIndex::from_treetake a&KeyIndexrenamerewrites a wiki link only when it would stop pointing at the renamed note, writes the shortest name that still resolves (a full path stays a full path), and leaves unchanged documents out of the result (previously every linking document was rewritten with the full path)renamerewrites a[[Name]]link that pointed at another note and would match the new name, so it keeps pointing at that note; a[[Name]]link that pointed nowhere is left as is and points to the renamed note from then on- An unresolved wiki link is written as typed in every
wiki_link_pathmode (previouslyfulldropped a.mdextension, so[[missing.md]]became[[missing]]) KeyIndex::resolve_link_keyis removed; useKeyIndex::target_keywithTarget::from_link_urldeleteremoves only the links that pointed at the deleted note; a[[Name]]link kept by hand points to another note with the same file name, if there is one
Fixed
Graph::reindex_keysand backlink cleanup no longer overflow the stack on documents with thousands of blocks in one run
diwe
Added
- An
enginefeature, on by default, that gates the search, tokens, find, retrieve, stats, schema and watcher modules and their crates (bm25,tiktoken-rs,fuzzy-matcher,notify,csv,globset); a dependent that only needs the configuration types builds withdefault-features = false