0.5.0 (2026-04-04)
- Introduced a new WASM-based plugin system with dynamic API dispatching, thread support, and plugin state restoring on reload
- Moved Vim motions to the new plugin system and removed the old one
- Added a builtin ctags-based language server with hover, signature help, and completion
- Implemented debugger watches, multiple variable views, inline value display, and recursive variable search
- Added variable filtering, separate debugger views, and inlay hints for debugger values. Breakpoints now move when editing text
- Added support for nested treesitter languages (e.g. code blocks inside markdown)
- Added markdown features like inline image preview with GIF support, and table alignment
- Added context lines with improved rendering and detection
- Implemented auto-insertion of matching braces, quotes, and closing characters with improved auto indenting
- Auto-coloring for brackets
- Unsaved file temp save/restore
- Somewhat configurable status line
- New themes (dark blue, gruvbox dark)
- Added git status display
- More Perforce integration with diffing, changelists, and file adding
- Added support for different line heights and font sizes
- Major refactor to make the editor extensible through modules. Converted debugger, terminal, and LSP to modules. Added experimental dynamically linked module support with build tooling
- Lots of bug fixes (and new bugs)
- Rerender on resize
- On windows: change title bar color to match theme
- Undo tree
- Scroll bars (not interactable)
- Support for loading UTF-16 encoded files (No support for saving as anything other than UTF-8!)
- Highlight changes within lines in diff view.
- Highlight parenthesis in different colors
- Nimble no longer supported for installing dependencies (use
atlasinstead.nimble build*commands should still work) - Add more minimal toast message style
0.4.0 (2025-05-01)
- You can now define an alias for commands, with the ability to run multiple commands in one alias and forward arguments or supply default arguments.
- You can now define multi key keybindings with keys which produce characters (like
w) in modes that consume input (like insert mode) while still being able to insert the original key by waiting or pressing another key which is not in the bound sequence.- Example: when you bind
jjin insert mode to exit to normal mode, three things can happen:- You press
jonce then after a configured delay thejwill be inserted as text - You press
jtwice in a row, faster than the configured delay, then it will exit to normal mode - You press
jonce followed by another key (e.gk) faster than the configured delay.jwill be inserted and the next key press will be handled as usual.
- You press
- Example: when you bind
- Added the ability to show signs on each line in a sign column, to show breakpoints, errors, code actions, etc.
- Added support LSP for code actions and rename
- Added support for multiple language servers attached to one document
- Added builtin language server to provide auto completion and goto definition for paths
- Changed how language servers are configured.
- Added builtin terminal emulator based on libvterm
- Added command
allwhich runs all arguments as commands. Arguments need to be arrays. - Remove carriage return from text when pasting from clipboard.
- Added command line argument
--monitorto specify which monitor to open the window on (Windows only). - Added support for line numbers for
goto-definitionfor the path language server (supported formats:path:line,path:line:column,path(line, column)). - Added support for rendering bold and italic text (currently only for terminals)
- More customizable layout options
- More configurable input modes, most default keybindings are now defined in here
- Fixed clicking on text being off by one line in the terminal sometimes
0.3.0 (2025-05-01)
- Removed NimScript plugins, for now only WASM plugins are supported (Lua plugins might be added later)
- File content is now stored as a rope CRDT instead of a string array. This allows a bunch of improvements:
- Better performance for big files and long lines
- Treesitter parsing is now done on a background thread
- File loading is now completely asynchronous, so no freezes when opening large files.
- Customizable language detection using regex
- Support WASM treesitter parsers
- Integrate Wasmtime as new WASM engine, for now only for treesitter parsers
- Added command for installing treesitter parsers (
install-treesitter-parser, requirestree-sitter-cliandgit) - Added smooth scrolling
- Added command for browsing docs (
explore-help) - Added settings browser (
browse-settings) - Added key binding preview while waiting for further input in longer keybindings
- Added regex based goto-definition/goto-references/goto-symbol etc if no language server is available (requires Ripgrep). Regexes can be configured per language
- Improved document completions to run mostly on a background thread (except filtering) and cache the entire document
- Added inlay hints to preview colors detected using regex, e.g. "#feabee" can be detected, and an inlay hint in the corresponding color will be shown before the text. Has to be configured per language.
- Git view improvements:
- Added keybindings to navigate changes without switching focus to the preview
- Added ability to stage/unstage/revert individual changes, from git view or while diff is open
- Added expression evaluation for basic arithmetic like 1+2, and keybindings that add/subtract from a number at the cursor location
- Added option to disable line wrapping
- Added horizontal scrolling
- Added highlighting of all instances of text matching the current selection
- Added toast messages for errors
- Added commands to create/delete files/directories in file explorer.
- Reworked settings
- Recent sessions, finders to open recent sessions or find sessions
- Open session in new pane in tmux or zellij
- Shell command line: Run shell commands and show the output in a text editor. Not a full terminal, but good enough for some things.
- Many small fixes and improvements
- Fixed ctrl+w and ctrl+u in insert mode
- Escape now needs to be pressed twice to cancel the command line or popups, pressing it once goes to normal mode instead
- More LSP support
- Basic DAP support