iwe version history
17 releases tracked, newest first.
iwe-v0.12.0
Jul 12, 2026- Added `refs_text` option to preserve or normalize markdown link text
- Added schema validation with detailed violation reporting
- Added stats for orphan pages, similar pages, and dangling links
- Changed default behavior to preserve link text instead of normalizing
6 downloads
iwe-v0.11.0
Jul 10, 2026- Added explicit key and expansion options for document creation and retrieval.
- Changed default retrieval behavior to no longer expand by default.
- Deprecated old expansion flags in favor of new `--expand-*` options.
- Moved Djot support behind an opt-in feature flag.
6 downloads
iwe-v0.10.0
Jul 10, 2026- Added `refs_path` option to write links as root-absolute paths in `iwe`, `iwes`, and `liwe`.
- Fixed root-absolute links and links with fragments to resolve correctly from any directory.
- Improved link code action in `iwes` to honor `refs_path` and write links relative to the current document.
- Enhanced `liwe` with `RefsPath` enum and improved link URL handling for consistent path resolution.
6 downloads
iwe-v0.9.0
Jul 9, 2026## `iwe`
### Added
- `--project` / `--add-fields` accept block-addressed sources: `{ $content: PREDICATE }` narrows a document's body to the selected blocks (rendered at their original depth), `$blocks` / `{ $blocks: PREDICATE }` lists each selected block as `type` / `path` / `text` data, and `{ $matches: REGEX }` greps matching lines with their section paths.
- `find` markdown output renders `$blocks` and `$matches` entries one line each as `key › section path › text`, and switches to the fenced-block form with the narrowed body when a parameterized `$content` field is projected.
- `--project` accepts a bare block predicate — `--project '$header: {}'` renders each document's body narrowed to the selected blocks (the headers-only form) under `key` and `content` fields, so `--format json`/`yaml` output keeps the document identity that the markdown fence already carries.
- `update` gains a block-edit flag per operator — `--replace`, `--replace-text`, `--insert-before`, `--insert-after`, `--append`, `--delete` — each taking a `{ <selector>, payload }` mapping and composing with `--set` / `--unset` into one atomic update. A validation failure (unmet `expect`, overlapping selections, i
6 downloads
iwe-v0.8.0
Jul 7, 2026- Added fuzzy and lexical search options with Reciprocal Rank Fusion for `iwe` and `iwec`.
- Improved search result explanations and truncation warnings in `iwe`.
- Added BM25 full-text ranking and plain text rendering in `liwe`.
- Changed workspace-symbol search in `iwes` to fuse fuzzy and lexical results.
6 downloads
iwe-v0.7.0
Jul 4, 2026- Added `--limit`, `--max-tokens`, and `--max-document-tokens` options to `retrieve` and `find` commands.
- Changed `find` markdown output to a compact index format.
- Removed `retrieve --no-content` and `retrieve --dry-run` options.
- Added token handling and truncation support across `iwe`, `iwec`, and `liwe`.
6 downloads
iwe-v0.6.1
Jul 3, 2026## `iwe`
### Fixed
- `retrieve --backlinks` can now be turned off: `--backlinks false` disables incoming references, while a bare `--backlinks` (and the default) still includes them. Previously the flag was stuck on and `--backlinks false` was rejected outright.
- `stats -k <key>` accepts a key written with a `.md`/`.dj` extension (`stats -k note.md`) instead of reporting the document as not found.
- `find --format keys` combined with `--project` now prints the matched keys instead of nothing.
- `attach` reports an error and exits instead of crashing when an action's `key_template` or `document_template` is malformed; `attach --list` and `--dry-run` are affected too.
- `schema` and `find --filter '{$type: datetime}'` no longer crash when a document holds a datetime value with multibyte characters.
## `iwes`
### Fixed
- Renaming a wiki link (`[[target]]` or `[[target|label]]`) now selects the target for editing instead of an empty spot at the closing brackets.
- Positions in a document that starts with an empty frontmatter (`---` / `---`) are no longer shifted up by two lines, so goto-definition, hover, rename, and code actions land on the right line.
- A failed rename (for exam
6 downloads
iwe-v0.6.0
Jun 27, 2026- Added `preserve_newlines` option to maintain semantic line breaks during formatting.
- Fixed issues with list item collapsing, reference links, and definition lists.
- Improved handling of hard line breaks, task lists, and math blocks.
- Ensured proper round-tripping for autolinks and display math.
6 downloads
iwe-v0.5.0
Jun 24, 2026## `iwe`
### Added
- `format` config option (`markdown` | `djot`, default `markdown`) selects the document format, with a matching `[djot]` options table. With `format = "djot"`, `iwe` reads, normalizes, exports, and creates [djot](https://djot.net/) documents and works with `.dj` files instead of `.md`.
## `iwes`
### Added
- `format = "djot"` in the configuration makes the server read, format, and write [djot](https://djot.net/) documents and map file URIs using the `.dj` extension (default remains `markdown` with `.md`).
### Fixed
- The server no longer leaks memory as documents are edited and saved; each update used to retain the previous version's graph data, growing memory without bound over a long session.
## `iwec`
### Added
- `--host` flag sets the address the HTTP transport binds to (default `127.0.0.1`); pass `--host 0.0.0.0` to accept connections from other machines.
- `format = "djot"` in the configuration makes the server read, write, and watch [djot](https://djot.net/) `.dj` documents (default remains `markdown` with `.md`).
### Fixed
- The server no longer leaks memory while watching a folder; repeatedly saving documents used to grow memory without bound and c
6 downloads
iwe-v0.4.0
Jun 22, 2026## `iwe`
### Fixed
- Normalization now preserves escaped Markdown literals (such as `\*text\*`, a leading `\#`, or `\[label\](url)`) instead of dropping the backslashes and re-interpreting the text as live markup.
## `iwes`
### Fixed
- Documents with Windows line endings are no longer stripped of their frontmatter when edited or saved, and code action ranges no longer drift one column per line on such documents.
- Renaming a link target in a document inside a subfolder no longer deletes the target file and replaces it with an empty one; the new file is written to the correct folder with the original content, and backlinks are updated to a valid path.
- Formatting and code actions no longer turn escaped literal text into live Markdown; an escaped `\*text\*`, `\#`, or `\[label\](url)` keeps its escapes, and a list item written as `\[ \]` is no longer rewritten into a task checkbox.
## `iwec`
### Added
- `--transport` flag selects how the server is served: `stdio` (default, unchanged) or `http`. With `--transport http` the server listens for Streamable HTTP connections at `http://127.0.0.1:<port>/mcp`, with `--port` setting the port (default `8000`). The server speaks plain HTT
6 downloads
iwe-v0.3.2
Jun 5, 2026## `iwes`
### Fixed
- Editing a large document no longer pins the server at 100% CPU; each `textDocument/didChange` reparses the document, and the parser's offset-to-position mapping is no longer quadratic.
## `liwe`
### Fixed
- `MarkdownReader` parsing of large documents no longer runs in quadratic time; source offsets are mapped to line/column positions with a binary search over the line table and a single UTF-16 count per endpoint, instead of rescanning every preceding line for each inline element.
6 downloads
iwe-v0.3.1
Jun 3, 2026## `iwes`
### Fixed
- File URLs are now emitted with a lowercased Windows drive letter (`C:` becomes `c:`) so URIs returned by the server match the casing editors use; drive-letter normalization previously had no effect on Windows.
6 downloads
iwe-v0.3.0
Jun 2, 2026## `iwe`
### Added
- `markdown.wiki_link_path` config option (`preserve` | `full` | `short`, default `preserve`) controls how `iwe normalize` and `iwe export` write the path inside a wiki link: `preserve` keeps each link as typed, `full` rewrites to the target's full key path, and `short` rewrites to the shortest unambiguous suffix. `iwe init` now writes the option in the generated config.
### Changed
- `iwe normalize` now recognizes task-list markers in list items (`- [ ]`, `- [x]`) and normalizes `[X]` to lowercase `[x]`
- List items are now a distinct node type rather than sections, so `iwe stats` no longer counts them toward the section total and `iwe extract` no longer lists them as extractable sections (section and `--block` numbers shift accordingly)
### Fixed
- Wiki link shortening no longer rewrites a link whose target is missing from the document set onto an unrelated document that shares the same file name; such links keep their full path.
## `iwes`
### Added
- `markdown.wiki_link_path` config option (`preserve` | `full` | `short`, default `preserve`) controls how completion, the create-link code action, and normalize-on-format write the path inside a wiki link:
6 downloads
iwe-v0.2.0
Jun 2, 2026## `iwe`
### Added
- `markdown.formatting.ordered_list_content_indent` and `markdown.formatting.bullet_list_content_indent` config options set the minimum indentation for list item content and continuation lines (accepts `2`–`4`); set either to `4` for MkDocs-style alignment (`1. item` / `- item` with 4-space continuation) instead of the default single space after the marker
### Fixed
- `iwe normalize` now renders a list as loose (a blank line between items) when any item contains a code block, table, blockquote, or horizontal rule, so a following item is no longer glued directly under the preceding item's block (previously only items with multiple paragraphs triggered loose rendering)
## `iwes`
### Added
- `markdown.formatting.ordered_list_content_indent` and `markdown.formatting.bullet_list_content_indent` config options control the minimum indentation of list item content in normalize-on-format output (accepts `2`–`4`); set either to `4` for MkDocs-style alignment (`1. item` / `- item` with 4-space continuation)
### Fixed
- Hover, go-to-definition, and find-references for wiki links (`[[name]]`) now resolve the target by basename anywhere in the workspace rather tha
6 downloads
iwe-v0.1.10
May 30, 2026## `iwe`
### Fixed
- `iwe normalize` now inserts a blank line between a list item's text and an adjacent code block, table, blockquote, or horizontal rule (previously the block was glued directly under the item text)
## `iwes`
### Fixed
- `textDocument/definition`, `textDocument/hover`, and `textDocument/rename` now recognize links inside table cells; navigating from a `[[wiki]]` or `[text](link)` reference in a table previously returned an empty result.
- `textDocument/foldingRange` includes the final line of a multi-line block (such as a table) at the end of a document without a trailing newline, and a two-line blockquote is now foldable.
- `textDocument/hover`, `textDocument/definition`, and `textDocument/rename` now locate links correctly when the line contains emoji or other astral-plane characters; link positions are interpreted as UTF-16 code units per the LSP default (previously a link after an emoji could not be hit because positions were counted as Unicode scalars).
## `iwec`
### Fixed
- File-watcher document keys join relative path components with `/` so they use forward-slash separators on all platforms (previously preserved Windows backslashes)
## `liwe`
###
6 downloads
iwe-v0.1.9
May 28, 2026## `iwes`
### Fixed
- `textDocument/definition` and `textDocument/hover` now resolve links correctly in documents containing multi-byte characters (previously returned empty results due to byte-vs-character offset mismatch)
## `liwe`
### Fixed
- `InlineRange` character positions now use character offsets instead of byte offsets, fixing `link_at`/`url_at` position lookups in documents containing multi-byte characters
- `line_starts` now counts actual `\n` byte positions instead of using `str::lines().len() + 1`, fixing line offset calculations for `\r\n` line endings
6 downloads
iwe-v0.1.8
May 24, 2026## `iwe`
### Added
- `iwe normalize` honors three new `[markdown.formatting]` options: `wrap_column` wraps paragraphs at the configured column, `preserve_line_breaks` keeps hard line breaks instead of dropping them, and `line_break_style` (`"backslash"` | `"spaces"`, default `"backslash"`) selects how preserved breaks are emitted.
## `iwes`
### Added
- `textDocument/formatting` honors three new `[markdown.formatting]` options: `wrap_column` wraps paragraphs at the configured column, `preserve_line_breaks` keeps hard line breaks instead of dropping them, and `line_break_style` (`"backslash"` | `"spaces"`, default `"backslash"`) selects how preserved breaks are emitted.
## `liwe`
### Added
- `markdown.formatting.wrap_column: Option<usize>` — wraps `Para`/`Plain` blocks emitted by `Graph::to_markdown` at word boundaries; inline code, wiki links, math, and link/image URLs stay atomic while inline-link / image text wraps at spaces. List and blockquote indents are subtracted from the effective width via the new `GraphBlock::to_markdown_indented` API.
- `markdown.formatting.preserve_line_breaks: Option<bool>` — when `true`, `MarkdownEventsReader` preserves hard line breaks (` \n`
6 downloads