Kami0.1
- Changes
- 103
- Areas
- 11
- First release
- —
The first release: a native editor with language servers, a full-window Git view, a debugger, and a terminal with a task runner.
Highlights
- A native editor
- Kami is a macOS IDE written in Rust on GPUI, with tree-sitter highlighting for 29 languages, code folding, multiple carets, split panes and a session that comes back on restart.
- Language servers per project
- Rust, TypeScript, JavaScript and PHP get completions with snippets, hover, signature help, go to definition, find usages, rename, quick fixes, inlay hints and format on save. In a monorepo, each project gets its own server.
- Full-window Git view
⌥⌘Gopens a commit graph with a refs sidebar, side-by-side commit diffs, staging down to single lines, and push, pull and fetch.- Built-in debugger
- Debug Rust programs through lldb-dap with breakpoints, conditions, stepping, a variables tree, watches, a debug console and inline values.
- Terminal and task runner
- A real shell in a bottom panel, plus cargo, npm and Make tasks that need no setup, with clickable compiler errors and a test runner that reruns only the failures.
Editor
21 changes- Syntax highlighting for Rust, TypeScript, TSX, JavaScript, PHP, Python, Go, Java, Kotlin, Swift, Scala, Ruby, C, C++, C#, SQL, HTML, CSS, XML, YAML, TOML, JSON, Markdown, Bash, Dockerfile, NEON, Apache config, CoffeeScript and
.envfiles. - Tabs show a dot for unsaved changes;
⌘Ssaves, and undoing back to the saved text marks the tab clean again. - Closing a tab with unsaved changes asks for a second
⌘W. Middle-click closes any tab, and tabs shrink to fit instead of overflowing. - Mouse selection: drag, double-click for a word, triple-click for a line, and double-click-drag to extend by word.
- Multiple carets:
⌥-click adds or removes one,⌃Gadds the next occurrence, and⌥-drag makes a column selection. Typing, paste and delete apply at every caret as one undo step. - Word, line, page and document motion and word delete, in the editor and in every text field.
- Enter keeps the line’s indent and adds a level after an opening bracket;
⇥and⇧⇥indent and outdent. - Brackets and quotes close themselves, wrap a selection, and step over a closer you type anyway.
⌘/toggles line comments (⌘7on layouts where the slash needs Shift).⇧⌘Dduplicates the line, and⌥⇧↑/⌥⇧↓move lines up and down.⌥↑/⌥↓expand and shrink the selection along the syntax tree.- Code folding from the syntax tree: gutter chevrons,
⌥⌘[/⌥⌘], Fold All (⇧⌥⌘[), Unfold All and Fold Imports. Folds are kept when a file is closed and reopened. - Sticky lines pin the enclosing function, impl or class to the top while you scroll.
- Breadcrumbs under the tabs show the file path and the scopes around the caret; click one to jump to it.
- Find in file (
⌘F) with smart case, a match count,⌘G/⇧⌘Gto cycle, and Replace or Replace All as one undo step. ⌘\splits the editor into two panes over the same file; carets and folds in the other pane stay put as you edit.- Undo and redo bring the caret back to the edit.
- Clipboard history (
⌥⌘V) and bookmarks (F3to toggle,⌘F3to list them). - A file changed on disk reloads in place; a tab with unsaved edits warns instead of being overwritten.
- Zen mode (
⌃⌘Z) hides everything but the editor. - Markdown and CSV preview:
⇧⌘Vcycles Code, Mixed and Preview (or⌃⌘1–⌃⌘3), with tables, local images and scrolling that follows the source.
Code intelligence
14 changes- Language servers for Rust (rust-analyzer), TypeScript and JavaScript (typescript-language-server) and PHP (intelephense) start when a file of that language opens.
- Each server runs from the nearest
Cargo.toml,tsconfig.json,package.jsonorcomposer.json, so every package in a monorepo is read with its own config. - Any server can be replaced, given its own arguments, environment and initialization options, or turned off in settings.
- Servers are found on your shell’s
PATHeven when Kami is opened from Finder or the Dock. - When a project has no TypeScript of its own, the TypeScript server falls back to one found in the workspace or installed globally.
- Live diagnostics with error and warning counts, and a Problems panel (
⌘3) grouped by file, with an errors-only filter. - Completions (
⌃Space, or as you type the server’s trigger characters) insert snippets whose placeholders you step through with⇥and⇧⇥, and apply the server’s extra edits, such as imports. - Hover docs (
⌘I), signature help (⌘P, also shown on(and,), and inlay hints for parameter names and types. - Go to definition with
⌘Bor⌘-click, and find usages (⌥F7) in a bottom panel. - Rename (
⇧F6) and quick fixes (⌥↵) apply across files as one undoable edit, including files the edit creates, renames or deletes. - Format on save, with indent settings taken from settings or
.editorconfig. - File structure (
⌘F12) lists the current file’s symbols in the palette. - Scripts with a shebang get the language server for their interpreter.
- When a server rejects a file or a request, or can’t be found, Kami says so instead of showing nothing. Server errors appear as toasts, and everything goes to the log.
Files and projects
8 changes- File tree (
⌘1) that follows.gitignore, shows icons by file type, and reveals the active file. - A click selects a folder; double-click,
→or↵opens it, and the arrow keys move through the tree. - Right-click a file or folder for New File, New Folder, Reveal in Finder, Open in Terminal, Find in Folder, Copy Path, Copy Relative Path, Rename, Duplicate and Delete.
- Files dropped from Finder are copied in, renamed instead of overwriting.
- New File (
⌘N), plus Rename and Delete Current File in the palette. - Open Folder (
⌥⌘O), File ▸ Open Recent, and a Recent Projects dialog where entries can be removed. - Opening a project asks whether to use this window or a new one; every window has its own workspace.
- Kami reopens the last project at launch and restores its tabs, folds, breakpoints, bookmarks, scroll positions and panel sizes.
Git view
11 changes⌥⌘Gswitches the window to the Git view and back.- The commit graph shows branch lanes, branch and tag labels, author and age, and loads more history as you scroll. A work-in-progress row sits on top while the tree has changes.
- The refs sidebar has Local, Remotes, Tags and Stashes sections, with slash-separated names grouped into folders, a filter, and per-ref hide or show-only-this for the graph.
- Double-click a branch to check it out; a remote branch gets a local tracking branch, and a tag checks out detached.
- Right-click a ref for Checkout, Pull, Push, Copy name, Delete branch or Delete tag; stashes offer Apply, Pop and Drop.
- Select a commit to see its message, changed files and a side-by-side diff; double-click a file to open it in the editor.
- The work-in-progress row lists unstaged and staged files. Stage or unstage a file, everything at once, or just the selected lines (
⌥⌘S/⌥⌘U). - Discard selected lines or a whole file, confirmed by a second click.
⌥⌘↓/⌥⌘↑step through the changes in a diff, and a strip beside it marks each one.- Pull and Push show how far behind and ahead you are; Push has Force push (with lease) and Force push options, and Fetch fetches every remote.
- The columns resize by dragging, and the view refreshes when the repository changes on disk.
Git in the editor
7 changes- Gutter markers show added, modified and deleted lines against HEAD.
⌘Dshows the file’s diff against HEAD, and⌥⌘Dshows it side by side.- The Git panel (
⌘2) lists changed files; click one to stage or unstage it, and⌘↵commits. - The Git log (
⌘4) draws the branch graph; click a commit to see its diff. ⌥⌘Btoggles a blame column with each line’s commit, author and date.- Push (
⇧⌘K), pull (⌘T, fast-forward only) and fetch run in the background; the status bar shows the branch and how far it is ahead or behind. - The branch picker (
⌃⇧B) switches branches and creates new ones; stash and pop from the palette.
Terminal
4 changes- `
⌃`or⌘J` opens a real login shell in the bottom panel, using the theme’s ANSI palette. - The terminal resizes with its panel and scrolls back through history with the wheel.
- Select by dragging, double-click for a word or triple-click for a line, and
⌘Cto copy; the selection stays on its text as output scrolls. ⌘Kclears the terminal.
Run and test
5 changes- Cargo targets, npm scripts and Makefile targets are detected and run from
⌘K;⌘Rreruns the last one. - Output streams into the Run panel, and errors from rustc, clippy, tsc, gcc, clang and go are clickable.
- Test runs count passes and failures as they stream, with a button that reruns only the failed tests.
- A run marker next to
fn mainand each test runs just that one: cargo tests, PHPUnit test methods, and Jest or Vitestit,testanddescribeblocks. - Run configurations in
.kami/run.jsonset arguments, working directory, environment and an env file, and can run other configurations first.
Debugger
6 changesF5launches the project’s binary under lldb-dap, or the program and arguments set indebug.programanddebug.args, and continues when paused.F8,F7and⇧F8step over, in and out;⇧F5stops.- Click the gutter to toggle a breakpoint.
⇧⌘F8or⌥-click sets a condition, and conditional breakpoints are drawn hollow. - The debug panel shows the call stack, a variables tree you can expand, watch expressions, and a console for evaluating expressions.
- While paused, each line shows the values of the variables it uses.
- Breakpoints and watches are saved with the session.
Settings
8 changes⌘,opens Settings, with General, Editor, Languages, Keymap and About tabs, a search across all of them, and a sentence explaining each setting.- Every setting has a control: switches, dropdowns, number steppers and text fields. The keyboard moves through rows, and
⌥↑/⌥↓change a value. - Changes go to the user or the workspace settings file, keep the file’s comments, and apply immediately;
⇧⌘⌫resets a setting to the layer below. - Settings files are JSON with comments, in
~/.config/kami/settings.jsonand.kami/settings.json, and reload live when edited by hand. - Keymap presets for Default, IntelliJ and VS Code, with your own overrides on top. The Keymap tab lists every binding and marks conflicts.
- Themes: Dark, Light, One Dark Italic, Ryu, or a Raycast Theme Studio JSON file.
- The editor font can be picked from the monospace fonts installed on the Mac.
- The Languages tab shows each language server’s command and arguments, and offers the TypeScript versions found in the workspace.
App
7 changes- Native macOS menu bar and a standard window that resizes, zooms on a title bar double-click, and drags from the tab strip.
- Panels and the file tree resize by dragging their edges.
- A welcome screen with the main shortcuts shows when no file is open.
- A first-run guide sets your keymap and theme and walks through five shortcuts; Getting Started in
⌘Kbrings it back. - Errors appear as toasts and are also written to
~/.config/kami/kami.log; Open Log in⌘Kopens it. - Kami checks for updates once a day on the stable or beta channel, sends nothing about you, and can be turned off.
- Shipped as a signed, notarized app for both Apple silicon and Intel Macs.