# Changelog

{ .text-center }
[Download latest release →](https://github.com/hackermanai/koi/releases/latest)

## Build 218

<span class="badge badge-small">Unreleased</span>

- Fixed status bar buffer label order not updated after drag to reorder in buffer explorer
- Fixed nested headings depth issue in file outline for Markdown.
- Fixed accept closing tag issue and improved autocomplete suggestion ranking in HTML
- Reduced smooth scroll tail inertia
- Fixed inline shell path not updated after change to project or file explorer root
- Removed saved state label on unsaved buffers

## Build 217

<span class="badge badge-small">Oct 2, 2026</span>

- Bug fix for threading issue, see [Debugging race condition that was actually a lifetime bug](/blog/debugging-race-condition-bug/)

## Build 214

<span class="badge badge-small">Sep 28, 2026</span>

- Bug fix in open and close window with threads still running

## Build 213

<span class="badge badge-small">Sep 28, 2026</span>

- Added new PHP lexer with minimal syntax highlight and file outline support
- Fixed memory leak issue related to opening and closing many files without closing window
- Added html tags, comments, and front matter styling to Markdown
- Added built-in file outline support to Python, JavaScript, Markdown, Org, Odin, Zig, MATLAB
- Renamed syntax color `lambda` to `function` in themes.
This syntax color is now used for function definitions.

## Build 211

<span class="badge badge-small">Sep 23, 2026</span>

- Removed the active state icon
- Replaced the template config file one first launch with a smaller sample of the default configuration
- Performance improvements to selections that are very large.
Creating multiple selections now also show the selection with primary caret as less dimmed.
- Fixed issues with native dialog edit menu not always visible on save/open
- Added right-click to select from current cursor position to clicked position
- Minor changes to default themes
- Added tab list to status bar.
The tab list is only visible when there are more than one open buffer.
This also support tab multi-select, for example `Cmd + Click` to toggle active.

## Build 210

<span class="badge badge-small">Sep 17, 2026</span>

- Various performance improvements
- Minor UI improvements to search in project
- Added move cursor right at end of line to unfold if folded
- Changed `Cmd + 1 2 3 ...` to navigate between open tabs when many selected tabs, otherwise normal behaviour
- Added default keybinding `Cmd + ;` for `previous_tab`, and `Cmd + '` for `next_tab`.
These can also be used to navigate between any selected tabs.
- Changed inline chat to use `>` as symbol for prompt line (similar to `%` for inline shell).
This can be changed in config `inline_chat_symbol`.
Removed prefix on chat responses.
This change also brings inline chat under `Inline command`, so uses `Cmd + Shift + Return` instead of `Cmd + K` as default.
- Added pixel-by-pixel momentum-based smooth scrolling.
This is a large rewrite of scrolling behaviour for editor, minimap, and scrollbars, so please report any issues found.
- Added recently opened files to dock icon menu
- Added click on line info label to switch to word count, this replaces config option `show_word_count`
- Added short easing animation to pane open and close
- Added short easing animation to dialogs that change position or size dynamically
- Added tab multi-select behavior to the Buffer Explorer dialog, `Cmd + B`, as well as drag tab outside window to open in new window.
- Replaced custom title bar with macOS native title bar.
This change also replaces the buffer/ tab list in title with native title bar file controls.
This included a large rewrite of the buffer management, so please report any issues found.

## Build 209

<span class="badge badge-small">Aug 20, 2026</span>

- Fixed some cases where code completion ghost text showing after cursor moved issue
- Fixed find in project sometimes not finding file when in same root as large nested directory (replaced depth-first with breath-first)
- Fixed auto complete suggestions showing inside comments issue
- Changed Python lexer decorators to use special styling
- Minor changes to default light-mode `koi` theme
- Added auto complete HTML tag pairs, attributes, and in-string suggestions
- Added simple match scoring to file indexer filter to show better matched files first in list
- Added theme `koi-mono`

## Build 208

<span class="badge badge-small">Aug 17, 2026</span>

- Fixed extended cursor left overs sometimes not repainted after jump in file issue
- Fixed selection background sometimes reset after config file saved issue
- Fixed multi cursor add caret up or down to line with unicode positioned at wrong column issue 
- Fixed auto unfolding code blocks in non active editor issue
- Fixed highlight match from find in file outside scrolled view issue
- Minor UI updates to title bar
- Minor UI updates to dialog windows
- Added editor command `detect_tab_width` to automatically set tab width for current buffer
- Added editor commands for `toggle_eol_symbols`, `eol_mode_lf`, `eol_mode_crlf`, and `eol_mode_cr`
- Added cursor trail effect `cursor_trail_effect` and removed the experimental neon effect
- Added `accept_auto_completion` and `accept_code_completion` to config file to set which editor commands that also can trigger auto complete and code complete
- Added `dist` and `build` to default exclude list for file indexer
- Added lexer for Mojo (bascially Python with extra keywords)
- Added lexer for MATLAB
- Added xml and plist to use HTML lexer

## Build 207

<span class="badge badge-small">Aug 7, 2026</span>

- Fixed custom editor commands key bindings issue
- Minor bug fix in tearing off tabs into windows

## Build 206

<span class="badge badge-small">Aug 6, 2026</span>

- Fixed minor bug with fold headers inside comments in C lexer
- Fixed minor styling inconsistency when selecting items in command palette
- Fixed fold symbols not immediately updated after large insert issue
- Fixed multi-line italic rich text issue in Markdown lexer
- Fixed config file sometimes open in wrong editor window issue
- Fixed bug in selection overlay causing smaller documents to fall back to cheaper selection rendering
- Replaced default key bindings for `move_line_up`, now used for `move_caret_to_fold_above` (too easy to misclick)
- Increased max matches for project/disk search to 100,000 (was 20,000)
- Performance improvements to adding cursors to each line in selection (should now handle many more thousands of lines than before)
- Accepting a function name from auto complete list now inserts `()` and moves cursor inside (might make this per lexer or optional later)
- Replaced old example scripts in `/Application Support/Koi/.hackerman-scripts` with new ones using updated scripting API
- Added some color to the app icon
- Added many improvements to scripting API
- Added better labels to built in commands in command palette
- Added command to insert cursor on each line in selection, `add_cursors_to_line_starts`
- Added dynamic font weights based on system appearance unless setting your own `font_weight` in config file
- Added adaptive themes with system appearance monitoring (use "adaptive" theme to switch automatically when system changes)
- Added tips and other info to quick start guide shown on editor empty state

## Build 205

<span class="badge badge-small">Aug 5, 2026</span>

- Fixed keyboard and mouse select/unselect multiple buffers in buffer explorer issue
- Fixed multiple active buffers in buffer explorer styling issue
- Fixed bug in `is_hexstr`
- Increased shell timeout timer to 10 seconds (was 0.5 seconds)
- Removed double click on tab to close (too easy to misclick)
- Added code completion on indented lines after newline (for fast pre-fill line without type)

## Build 204

<span class="badge badge-small">Aug 2, 2026</span>

- Toggle file explorer with text in filter selects all text for faster replace (no text in filter still focus on list on open)
- Multiple cursor edit performance improvements (should be much snappier now, also in very large files)
- Fixed view pos in config file jump on save issue
- Added dracula, gruvbox, tokyo-night, catppuccin, and nord themes
- Added `focus_main_editor`, `focus_split_editor` commands
- Removed `toggle_newspaper_scroll`, `transpose_line` commands

## Build 203

<span class="badge badge-small">Jul 29, 2026</span>

- Fixed select all not updating line info in status bar when cursor at BOF issue
- Fixed indexer blocking UI on large files issue (moved strip comment and string words to own thread)
- Minor UI changes to tear off buffer and drag and drop window preview
- Added drag to reorder buffers in title bar (still experimental)
- Added model label again to show which models are active and moved working indicator to left side in status bar

## Build 202

<span class="badge badge-small">Jul 28, 2026</span>

- Minor bug fix

## Build 201

<span class="badge badge-small">Jul 28, 2026</span>

- Fixed quickstart overlay rendering on empty saved buffers issues (should only be shown on empty unsaved buffers)
- Fixed line numbers not updated until focus after tear of buffer into own window issue
- Fixed save/open file last dir used updated after saving config issue (should only update on non-config saves)
- Fixed update file explorer root from filtered results issue
- Fixed lexer colors not found issue on saving plain text files
- Minor perfomance optimization on cursor movements

## Build 200

<span class="badge badge-small">Jul 26, 2026</span>

- Fixed tab first indenting then replacing single selections issue (now only indenting)
- Fixed unable to copy selection after indent issue
- Fixed bug in selection overlay that triggered line highlight redraw on type
- Removed option to submit selection as prompt (now current line is prompt)
- Removed smart line comments in HTML files with nested JavaScript, CSS, and PHP (not currently supported in lexer)
- Disabled background indexing on startup in very large files (0.5M+ lines)

## Build 199

- Fixed update file explorer root from filtered trees issue (should now work in both normal and filtered trees)
- Fixed minor behavior inconsistency in command palette
- Fixed shortcut issue in native dialogs (save, open)
- Fixed minor behavior inconsistency in some clickable labels
- Fixed code complete sometimes triggered from modifier key presses (now only called on printable keys)

## Build 198

- Fixed hotspot links in Org and Markdown
- Fixed minor lexer naming issue
- Fixed C lexer fold header in comments issue (removed other symbols than `{ ... }`)
- Fixed minor styling inconsistency in filter inputs
- Fixed highlight word on partial selections (previously stripped leading ws, now only exact matches)
- Removed `#+begin_assistant`, `#+begin_assist`, `#+begin_ai`, and `#+begin_chat` headers from org lexer
- Removed inline code execution in Org files (got rid of dependencies `quickjs`, `hy`, and `lupa`)
- Added quick start overlay to empty windows

## Build 197

- Minor bug fix

## Build 196

- Fixed background indexing not cancelled properly (threading issue)
- Fixed newline issue around folded code blocks
- Fixed Python lexer fold skipped empty line after class definition issue
- Removed words in comments and strings from auto complete suggestions
- Added Tab key press as quick accept in completion list

## Build 195

- Minor UI changes to find in file and search explorer (replaced buttons with flags)
- Added horizontal auto scroll when typing close to edge

## Build 194

- Removed AI code complete suggestions from auto complete list (code complete now shows up as ghost text only, accept with Right arrow key)
- Fixed auto complete dialog overlapping text at edges issue

## Build 193

- Minor bug fix

## Build 192

- Keyboard navigation improvements to auto complete list
- Fixed auto complete list position issue after drag in minimap 
- Find in file performance improvements
- Disabled highlight all matches on select in very large files
- Disabled auto search on type in very large files (0.5M+ lines)

## Build 191

- Fixed rich text styling issue in split editor
- Added search flags to find in file


