v0.1.14
Highlights
- The window never waits. Every command that touches the disk, git, tmux, the store or a process runs off the thread the window draws on. A guard in
cargo xtask checkkeeps it that way. - Lighter rendering.
- The shell stops re-rendering the whole app on every change: components read the slice they need.
- Streaming chat applies its frames once per frame, and turns that are out of view are not laid out.
- Terminals give back their GPU context after a while off screen, fit once a frame, and receive events through one shared listener.
- Smaller and faster builds. The frontend bundle drops from 58 MB to 15 MB (source maps and an unused CJK font are left out). The diff editor, Settings, the palette and onboarding load on first use. The app and the updater now share one HTTP client. A release no longer rebuilds the binary to bundle it, and it skips the frontend tests when CI already passed on the same commit.
- Menus. There is one menu component everywhere:
- it works from the keyboard, and only one menu is open at a time;
- it stays inside the window;
- when an action is refused, a message says why.
Changed files in the Git panel get a context menu, commits in History can be copied or opened on their forge, and F2 renames as the menus say it does.
- Clickable paths. A path printed in a terminal opens in the app with a click: images, PDFs, logs and JSON, at the line when one follows the path. Relative paths resolve from the shell's current folder, and paths the terminal wrapped over several rows link whole.
- Claude Code plugin. devpit's hooks and board tools can be installed as a Claude Code plugin from a terminal's footer. It works for sessions started with your own
claudefunctions and aliases.
Fixes
- Deleting or moving a symlink acts on the link, never on its target.
- Deleting or moving can no longer reach the project root or
.git. - Saves are atomic, and huge files are never read whole.
- The profile-command reader only runs your own shell function or alias, and on macOS a reading that times out no longer leaves what it started running.
- A profile list that no longer parses is not overwritten.
- MCP secrets in URLs, headers and environment pairs are masked.
- In Supervised mode, the chat asks before an agent runs a command or changes a file, instead of the change being refused. Reads are not asked about.
- The file viewer refuses credential files: CLI tokens,
settings.json,.env, keys, and devpit's own secrets. - The chat accepts pasted screenshots and dropped files, and its text can be selected and copied. Pictures it cannot keep, such as SVG or anything over 8 MB, are attached by path instead of being lost.
- Board:
- reordering a card within its lane no longer re-runs the lane's step;
- a confirmed move while a run is going no longer starts a second run;
- a card holds one running run at a time, enforced by the database;
- a lane can be added after another one was deleted.
- Files and search:
- the tree's git status is never older than the request;
- a file typed into while saving stays unsaved;
- content search opens at the matching line;
- deleted conversations leave the search index.
- The window has rounded corners again on Linux.
- Shortcuts read Ctrl on Linux.
- Projects in the rail show a pointer cursor.
- The command palette takes the keys typed right after Ctrl+K.
Full Changelog: v0.1.13...v0.1.14