All notable changes to this project will be documented in this file.
- Add cell text objects
vicandvacfor selecting cell content or cells including the left border. - Support multi-line selection for wrapped cells.
- Fix compatibility with the updated
vim.str_byteindexandvim.str_utfindexAPI in Neovim 0.11+ while retaining support for Neovim 0.10. - Remove the deprecation warning reported by
:checkhealthon newer Neovim versions.
- Added structural motions for TIR buffers:
block_topblock_bottomcell_nextcell_prev
- Structural motions support counts and Visual mode.
- Added default key mappings using
Ctrl-h/j/k/l:Ctrl-h: previous cellCtrl-l: next cellCtrl-k: top of blockCtrl-j: bottom of block
- Implemented Tir-embedded support.
- Tables can now be embedded and edited inside arbitrary files such as txt, Python, and Java source files.
- Added column width adjustment commands.
:Tir fit=n:Tir fit=:Tir fit{+|-}[n]:Tir wrap
- Changed width settings to be managed per table instead of applying to all tables in a file.
- Added
manage_wrapmode.- Enables wrap for plain-style lines when content exceeds the window width.
- Disables wrap for grid-style lines to preserve table layout.
- Improved vertical navigation behavior.
- Moving through rows with different cell widths now behaves more naturally.
- Restore the cursor position after
:write/WritePost. - Automatically install required parser packages when using lazy.nvim.
- Added TIR (ndjson) file I/O support for debugging.
:Tir _read_tir {file}:Tir _write_tir {file}
- Added support for opening files saved in tir-buf format.
- Reorganized internal modules.
- Reorganized buffer-local layout state handling.
- Rebuilt CI test cases.
- Deferred structural repair mode
- Dirty line tracking and highlighting
- Configurable highlight groups for dirty markers
- Dirty range tracking infrastructure
:Tir repair [enable|disable|toggle]
- Rename
:Tir redrawto:Tir repair - Rename reconcile-based APIs and modules to repair
- Rename
tir-vimarchitecture terminology totir-buf - Rename
vim_*modules tobuf_* - Rename
INVALIDnamespace/state toDIRTY - Improve internal pipeline organization and repair flow
- Improve Range utility APIs and naming consistency
-
:Tir redraw- Deprecated in favor of
:Tir repair - Will be removed in v0.5
- Deprecated in favor of
This release introduces a deferred repair model that allows temporary malformed table edits while preserving a structurally valid internal table model.
Buffer text and internal table state are now treated separately: the internal attrs/model remains authoritative, while the visible buffer may temporarily diverge until repaired.
This release also continues the transition from the older redraw/reconcile terminology toward a repair-based architecture.
- Support for TIR with mixed text and tables (e.g. GFM-style content)
- Multiline cell support with preserved line breaks inside cells
- Column width control commands (set and increment/decrement)
- Automatic wrapping of cell content based on column width
- Repeatable column width adjustments via
. - Column text objects (e.g.
vil,val,v3al) - Grid-aware join that merges at the cell level while preserving column structure
- Highlighting for table borders and special characters (
\n,\t) - Underline-based row separators to visually distinguish wrapped vs non-wrapped cells
- Reduced unnecessary buffer reads using caching
- Improved autocmd design with more stable buffer-local handling
This release significantly improves table editing ergonomics, especially for multiline cells and column operations.
- Redesign core architecture
- Reorganize directory structure
- Refactor module layout
- Redesign internal data structures
- Simplify internal data flow
This refactoring prepares the codebase for upcoming GFM table support.
- First release