Repository navigation
Releases: dedomorozoff/dmed
Release list
v0.8.4
{"value" => "# dmed v0.8.4\n\nThis release makes the side panels behave like apps instead of text dumps.\n\n## AI chat panel\n\n- Markdown rendering: headings, bullet lists, fenced code blocks, inline code, bold, italic and links now render styled — no more raw markup in answers.\n- Chat look: user messages sit in right-aligned bubbles; the transcript has a scrollbar.\n- Action buttons: the key-hint line is replaced by a strip of clickable icon buttons — new thread, copy reply, clear history, close — with hover callouts showing the label and its shortcut.\n\n## Select and copy everywhere\n\n- Drag with the mouse over the chat transcript to select text; it lands in the system clipboard on release.\n- Shift+drag over the terminal panel selects output (plain clicks still reach the application running inside) and copies on release.\n\n## Terminal focus\n\n- The docked terminal no longer swallows all keyboard input: click the chat rail or the editor to work there, click the terminal to type into it again. Alt+T still closes the panel.\n\n## Project panel\n\n- The command palette (Ctrl+P) gained Project: Rename / Duplicate / Delete, acting on the selected tree entry.\n\n## Fixes\n\n- Fixed a crash (nil pointer in ChatStream) when a chat turn started right after saving the AI preferences.\n\nFull changelog: v0.8.3...v0.8.4\n", "PSPath" => "C:\cygwin64\home\lau\dmed\.release-notes-v0.8.4.md", "PSParentPath" => "C:\cygwin64\home\lau\dmed", "PSChildName" => ".release-notes-v0.8.4.md", "PSDrive" => {"CurrentLocation" => "cygwin64\home\lau\dmed", "Name" => "C", "Provider" => "Microsoft.PowerShell.Core\FileSystem", "Root" => "C:\", "Description" => "", "MaximumSize" => nil, "Credential" => "System.Management.Automation.PSCredential", "DisplayRoot" => nil}, "PSProvider" => {"ImplementingType" => "Microsoft.PowerShell.Commands.FileSystemProvider", "HelpFile" => "System.Management.Automation.dll-Help.xml", "Name" => "FileSystem", "PSSnapIn" => "Microsoft.PowerShell.Core", "ModuleName" => "Microsoft.PowerShell.Core", "Module" => nil, "Description" => "", "Capabilities" => 52, "Home" => "C:\Users\lau", "Drives" => "C D L X"}, "ReadCount" => 1}
v0.8.3
dmed v0.8.3
dmed is a terminal-native, keyboard-driven code editor built in Go for AI-assisted development. AI agents can read, propose, and apply changes, but every change is reviewed and approved by a human.
This release introduces a real interactive terminal, reliable status-bar layout, consistent panel separators, and improved DAP adapter detection.
✨ New & Improved
Terminal
- Real PTY terminal support:
- Windows ConPTY;
- Unix PTY support for Linux, macOS, and BSD.
- Persistent interactive shell sessions.
- ANSI screen emulation with:
- colors and text styles;
- cursor positioning;
- alternate-screen support;
- full-screen TUI programs.
- Terminal resize support.
- Keyboard input forwarding.
- Clipboard paste support.
- Mouse event forwarding to terminal applications.
- Interactive and full-screen TUI application support.
Editor UI
- The application status bar always remains at the bottom of the screen.
- Git panels and terminal overlays no longer hide or replace the status bar.
- Panel separators are placed between UI sections instead of appearing as trailing footers on every panel.
- Panel geometry, mouse hit-testing, and rendering now use consistent coordinates.
- Added mouse support for the folder picker.
- Separator rendering respects the ASCII fallback mode used on legacy terminals.
Debugging
- Improved automatic DAP adapter detection.
- Fixed JavaScript and TypeScript DAP presets:
- adapter:
node; - mode:
stdio; - the adapter script is passed through
adapter_args.
- adapter:
- Preserved support for connect-mode DAP adapters.
- Improved language-specific DAP defaults.
🐛 Fixes
- Fixed terminal process-exit handling.
- Added protection against stale events from completed terminal sessions.
- Fixed terminal resize and shutdown behavior.
- Git panels and terminals no longer overwrite the application status bar.
- Fixed panel-height calculations and mouse hit-testing.
- Made the Unicode/ASCII compatibility test independent of the CI environment.
Full Changelog: v0.8.2...v0.8.3
v0.8.2
dmed v0.8.2
dmed — a terminal-native, keyboard-driven code editor built in Go, designed for AI-assisted development. AI agents read, propose, and apply changes — but every diff is approved by a human. Nothing happens behind your back.
This release brings PHP/Xdebug debugging (dmed speaks DBGp directly — Xdebug has no DAP), fetch/push and inline git blame in the editor, per-pane status bars in splits, an Unsloth provider preset, and fixes for Cyrillic/Ctrl-Alt keyboard layouts.
📦 Install
One-line install on Linux, macOS, and BSD (needs only curl):
curl -fsSL https://raw.githubusercontent.com/dedomorozoff/dmed/main/install.sh | shBuild from source:
git clone https://github.com/dedomorozoff/dmed.git && cd dmed && make buildScriptable installer / package builds for Linux .deb (Ubuntu), .rpm (Fedora), .pkg.tar.zst (Arch), Termux .deb, and Windows .zip are attached to this release.
✨ New & improved
Git
- Fetch / push from the Git panel (
Ctrl+G, status mode:f/p) — background sync to/fromoriginover go-git, with an inline "no remote configured" note and status-line result/error messages. - Inline git blame (
Alt+B, palette "Git: Toggle Blame") — right-alignedauthor · whenannotations on each unchanged line, like Zed. Dim, non-intrusive, and skipped when there is no room on the row or word wrap is on.
Debugging — PHP out of the box
- PHP/Xdebug via DBGp — a native DBGp client (
internal/dbgp): breakpoints, run/step, stack/context/property variables and eval, all exposed through the same panel as DAP. Xdebug needs no DAP adapter. - Connect-mode DAP — a third
adapter_mode: connectwires adapters that listen (Xdebug's port 9003) instead of being spawned. - Language auto-detection — Go → Delve/reverse, PHP → Xdebug/connect applied automatically at
F5; explicit[debug]settings always win (auto_detecttoggles this).
Editor
- Per-pane status bars in splits — each pane in a split owns the bottom row of its cell: its own file name, branch, line-ending/encoding, and
Ln/Col. Vertical splits get one status per column; horizontal splits dock one above the separator and one at the screen bottom. The app-wide row keeps icons, messages, and hints.
AI
- Unsloth (local) provider preset — OpenAI-compatible,
http://localhost:8000(+ a built-in installer hint), same zero-config flow as Ollama/LM Studio/vLLM.
🐛 Fixes
- Ctrl/Alt chords on non-US keyboard layouts — the Windows Console API reports
Ctrl+<physical key>with CyrillicCode/Text, andCtrl+Gused to type a letter instead of opening the Git panel. The key name is now rebuilt from modifiers when Ctrl or Alt is held; Shift-only input keeps its form sog/Gtop/bottom moves survive. - DBGp continued/stopped race —
EventContinuedis now emitted before the next continuation command, so the stopped→running transition no longer drops (the panel could get stuck instoppedwhile the debuggee ran). - DBGp nil-connection guard —
Close/sendTextare safe before the<init>handshake accepts a session.
Full Changelog: v0.8.1...v0.8.2
v0.8.1
dmed v0.8.1
dmed — a terminal-native, keyboard-driven code editor built in Go, designed for AI-assisted development. AI agents read, propose, and apply changes — but every diff is approved by a human. Nothing happens behind your back.
This release brings the DAP debugger, a built-in TUI folder picker, code bookmarks in the gutter, and a pass of debugger/palette reliability fixes.
📦 Install
One-line install on Linux, macOS, and BSD (needs only curl):
curl -fsSL https://raw.githubusercontent.com/dedomorozoff/dmed/main/install.sh | shBuild from source:
git clone https://github.com/dedomorozoff/dmed.git && cd dmed && make buildScriptable installer / package builds for Linux .deb (Ubuntu), .rpm (Fedora), .pkg.tar.zst (Arch), Termux .deb, and Windows .zip are attached to this release.
✨ New & improved
DAP debugging (M7)
- Debugger client (
Ctrl+Alt+D,F4–F7) — breakpoints (F4/F5run/continue,Shift+F5stop,F6step over,F7step in,Shift+F7step out); threads / stack / variables tree with mouse-driven expansion and wheel scrolling; process console with scroll-back and eval line. - Generic DAP adapters —
adapter_cmd/adapter_mode(reverse | stdio) /adapter_args/launch_type/launch_request/launch_jsonlet you wire any adapter (debugpy, lldb-dap, node, …). Go/Delve is the default. - Line-edit palette commands + DAP settings wizard — the wizard prompts for adapter/provider/launch config with sensible Go defaults.
- Execution-point highlight — the stopped line is followed and highlighted (
▶), auto-navigating to the file and line.
Editor
- Built-in TUI folder picker replaces the system-dialog Open Folder command; focus moves to the project tree after opening a folder.
- Code bookmarks —
Alt+Mtoggle,Alt+Nnavigate; middle-click (wheel) toggles a bookmark in the gutter, left-click toggles a breakpoint. - Clickable status-bar panel icons with hover callouts (
▤tree,⎇git,✦AI,◉debug,❯terminal). - LSP reliability — cleaner completion popup and a working Delve debug integration.
- Normalized paste — CRLF pasted from the Windows clipboard is normalized to LF, so pasted text no longer garbles the buffer.
UI / help
- Scrollable F1 help (
j/k, PgUp/PgDn, Home/End, mouse wheel); fixedPgDnapp-wide (bubbletea v2 sendspgdown).
🐛 Fixes
- Ctrl+P palette no longer lists duplicate commands — the duplicated
duplicate_line … goto_definitionblock has been removed (45 unique commands, no repeats). - Debugger launch ordering —
launch → setBreakpoints → configurationDone(Delve rejects breakpoints before launch), soF5and breakpoints work reliably;F5now pauses a running debuggee; step keys and mouse-driven panel fixed. - DAP: "no debug session started" guard fixed so early breaks no longer abort the launch.
Full Changelog: v0.7.5...v0.8.1
v0.7.5
dmed v0.7.5
Editor
- Go to definition —
F12orCtrl+Clickjumps to the symbol definition via LSP (textDocument/definition); also reachable from the double-Shift palette - Fixed: duplicate multi-cursor positions are now deduped, so a double cursor never renders when secondary cursors land on the same cell
- Fixed: the editor hides the terminal cursor since it draws its own static reverse-video caret — no more blinking ghost cursor overlapping the real one
Stability
- Every goroutine spawned by the app now runs under
debug.CapturePanicReport, so a panic is logged to stderr instead of terminating the whole process (no more Windows exit code 2)
Downloads
- Windows:
dmed_0.7.5_windows-amd64.zip - Linux amd64:
dmed-linux-amd64 - Linux arm64:
dmed-linux-arm64 - macOS Intel:
dmed-darwin-amd64 - macOS Apple Silicon:
dmed-darwin-arm64 - FreeBSD / OpenBSD / NetBSD amd64:
dmed-freebsd-amd64,dmed-openbsd-amd64,dmed-netbsd-amd64
Full Changelog: v0.7.2...v0.7.5
v0.7.2
dmed v0.7.2
Editor
- Ctrl+/ toggles line comments and now jumps the cursor to the next line for rapid commenting
- F6 / F7 now toggle splits on and off (
Ctrl+\andCtrl+Alt+Htoo) - Goto line (
Alt+G), duplicate line (Ctrl+D), word wrap toggle - Mouse: click-to-focus in git/chat panels, double-click closes tabs, middle-click closes tabs
- Layout keys, paste text into active input fields
- Esc cancels a running inline AI request; y/n confirmations accept Cyrillic layout input
- Multi-line bottom inputs no longer overflow off-screen (git commit, AI inline/fix, agent prompts)
- Fixed: palette steals focus from AI panel; Enter in commit/branch inputs (CR keycode)
AI / Agents
- Native tool-calling (READ/SEARCH/RUN/EDIT) with diff review and compact tool cards
- Ghost text (Copilot-style), agent panel, inline completion, chat context improvements
- Persistent agent panel with task queue; re-open files touched by tool rounds
- Chat: thread + prompt history, natural wheel scroll, Ctrl+L clears history, Ctrl+Y copies last reply
- AI inline fixes via LSP (
Alt+F); fixed several streaming hangs in Ollama provider and resend of tool_call args - Applier can create new files (and their directories) with rollback cleanup
- Onboarding: provider presets in wizard, connection test,
setup-aiCLI
Plugins
- Plugin store with GitHub sources; rewritten, fixed emmet parser
Git
- Panel and hunk navigation improvements
Engineering
- Go 1.26 bump, dependencies updated
Downloads
- Windows:
dmed_0.7.2_windows-amd64.zip - Linux amd64:
dmed-linux-amd64 - Linux arm64:
dmed-linux-arm64 - macOS Intel:
dmed-darwin-amd64 - macOS Apple Silicon:
dmed-darwin-arm64 - FreeBSD / OpenBSD / NetBSD amd64:
dmed-freebsd-amd64,dmed-openbsd-amd64,dmed-netbsd-amd64
Full Changelog: v0.4.0...v0.7.2
v0.6.5
What's new in dmed 0.6.5
A big feature release: localization, a rope-backed buffer, a Lua plugin
system, and autocompletion powered by language servers.
Localization (i18n)
- Full English/Russian UI. Most panels, status bar, prompts and messages are
now translatable. - Switch the interface language from the command palette; the choice is
persisted to.dmed.confand applied on hot-reload — no restart needed. - A new
langconfig key and a language chooser in place of the two-way toggle.
Performance: rope-backed buffer
- The buffer is now backed by a persistent line-rope (
internal/rope), which
makes undo O(1) regardless of edit size and keeps history cheap to branch.
Lua plugins
- A built-in Lua plugin framework (embedded gopher-lua, no cgo).
- Drop
.luafiles into~/.dmed/plugins/or<project>/.dmed/plugins/to add
keybindings, command-palette commands and event hooks (file_open,save,
ready) with admed.*API to read/edit the active buffer. - Hot-reload: editing a plugin file reloads it live, no editor restart.
Docs:docs/PLUGINS.md.
Autocompletion & LSP
- Word-based completion popup: auto-triggers while typing or with
Ctrl+Space. - LSP completion source for Go (gopls), Python (pyright), TypeScript/JS,
Rust, C/C++, Lua, Ruby, PHP, Zig, JSON, YAML, CSS and HTML. - Diagnostics from the language server are now drawn as error/warning
markers in the gutter. - When you open a file whose language server isn't installed, a status-line
hint shows the exact install command.
Docs:docs/AUTOCOMPLETION.md.
Fixes & tooling
- Makefile works under FreeBSD's default
make(bmake) as well as GNU make,
somake installworks out of the box on FreeBSD.
v0.5.2
dmEd v0.5.2
A terminal code editor that treats AI agents as first-class participants.
Highlights
- AI agents (M4) —
Alt+Lopens the agent panel: queue tasks, review agent-proposed diffs and apply them after explicit approval. Every change from an agent passes through diff review before it touches your buffers. - Multi-cursor editing —
Alt+Dselects the next occurrence,Alt+Clickadds a secondary cursor, and typing/edits fan out across every cursor at once. - Git panel polish — the current branch is now listed with a
●marker soj/knavigation always works; Enter on the current branch reports "already on X"; letter commands are case-insensitive andqgoes back in branch/log views. - Session restore — reopening a project now actually restores your open files, per-file cursor positions, and the active tab.
- Global panel hotkeys and a New Folder palette command.
- CI & packaging — GitHub Actions runs vet/tests and cross-compiles 8 platforms; added a Windows build + zip package target.
v0.4.0
dmEd v0.4.0
dmEd — a terminal-native, keyboard-driven code editor built in Go, designed for AI-assisted development. AI agents read, propose, and apply changes — but every diff is approved by a human. Nothing happens behind your back.
This release massively expands the Git workflow, adds a one-line installer, makes all letter commands keyboard-layout independent, and overhauls packaging.
🚀 Install
One-line install on Linux, macOS, and BSD (only needs curl):
curl -fsSL https://raw.githubusercontent.com/dedomorozoff/dmed/main/install.sh | sh
Installs the latest release to ~/.local/bin (or %LOCALAPPDATA%\dmed on Windows). Also available:
# build from source
git clone https://github.com/dedomorozoff/dmed.git && cd dmed && make build
# or directly
go install github.com/dedomorozoff/dmed@latest
Requires Go ≥ 1.24 to build from source; the one-liner uses a prebuilt binary.
✨ New & improved
Git panel (Ctrl+G)
- Initialize a repo (i) when the current file has no repository — shows a clean "no repository" state.
- Branch management (b) — list branches, switch (Enter), create a new one (n).
- Commit history (l) — log with hash / subject / author / time, plus per-commit diff.
- Inline side-by-side diffs with syntax highlighting as you browse files, plus a full-screen d diff view.
- Focus & mouse — Tab / click to switch focus between the file list and the diff; wheel scrolls the diff.
- Staging (Space), stage-all (a), commit (c), refresh (r).
Keyboard-layout independence
All letter commands (c/a/r/l/d/b/i…) now work regardless of the active layout — including Russian ЙЦУКЕН (QWERTY-positional). Fixed a real bug where normalizeKey used byte length instead of rune count, leaving trailing NUL bytes that broke commands like b in Cyrillic.
Editor
- File: New File... in the command palette (Ctrl+P / F2).
- Status bar file info — LF/CRLF, encoding (UTF-8/UTF-16), plus a duplicate line command (Ctrl+D).
Tooling & packaging
- install.sh — a single-command installer that fetches the latest GitHub release.
- Refreshed Makefile — colorized help, VERSION/DESTDIR overrides, staged installs.
- Upgraded bubbletea to v2 for modern terminal support (mouse, window title).
- Package builds (deb/rpm/pacman/Termux/FreeBSD) repaired.
🐛 Fixes
- Cyrillic layout: b and other letter commands now work (NUL-byte bug in normalizeKey).
- Git panel no longer "inherits" an unrelated project repo for files outside the repository.
- Packaging paths and man-page locations fixed for rpm/pkg builds.
⚠️ Note
Install artifacts (.deb/.rpm/.pkg.tar.zst/Termux) are maintained in-tree via the Makefile — verify on your target systems.dmed - First release
Introducing dmed — Terminal-Native Code Editor with AI Agents as First-Class Participants
We're excited to announce the first public release of dmed, a terminal-native code editor built in Go with a single architectural rule: AI agents propose changes, but humans approve every diff. Nothing is modified behind your back.
What is dmed?
dmed is a full-featured, multi-file terminal editor with AI integration built in from the ground up. It combines the speed and focus of a terminal-native workflow with modern tooling — syntax highlighting, Git integration, LSP support, and a built-in terminal — alongside an AI layer where agents read, propose, and apply code changes through a transparent diff review process.
Key Features
Editing That Feels Right
- Multi-file editing with tabs and splits (vertical/horizontal)
- Fuzzy file finder (
Ctrl+O) with subsequence scoring - Project tree sidebar (
Ctrl+B) with fold/unfold navigation - Syntax highlighting (Chroma) for 100+ languages
- Find & replace (
Ctrl+F/Ctrl+H) - Full undo/redo with typing-run grouping — consecutive keystrokes form a single undo step
- Multi-selection, clipboard, line duplication, line deletion, and move-line operations
- Command palette (
Ctrl+P/F2) — fuzzy-search all commands - Hot-reloadable config via
.dmed.conf(INI format) - Layout-independent keybindings: Russian ЙЦУКЕН layouts are automatically mapped to QWERTY equivalents
AI, but Under Control
- Chat panel (
Alt+A) — streaming conversation with your codebase context - Inline rewrite (
Alt+I) — select text, describe the change, review a side-by-side diff, then accept (y) or reject (n). No hidden modifications. - Multiple providers out of the box:
- Ollama (local, free, offline)
- OpenAI-compatible (OpenAI, DeepSeek, Groq, Together, vLLM, LM Studio)
Change Tracking Without External Binaries
- fsnotify watcher — detects external file changes and offers reload or diff-based merge
- Pure-Go Git integration (no
gitbinary required):- Gutter indicators: added
+, modified~, deleted_ - Side-by-side diff view vs HEAD
- Stage/unstage/commit from the Git panel (
Ctrl+G) - Hunk navigation (
Alt+[/Alt+])
- Gutter indicators: added
Developer Tooling Built In
- Built-in terminal (
Alt+T) — persistent shell session, no context switching - LSP client — diagnostics, go-to-definition, go-to-references
- Sessions — auto-save and restore open files across restarts
- Help overlay (
F1) — all keybindings at a glance
Architectural Principles
- Buffer is the single source of truth. The view renders from buffer state and holds no editable state of its own.
- No global mutable state. Models are values; mutations happen through small, named pointer-receiver methods.
- Agent changes always pass through diff review. Inline AI: select text → describe change → AI streams response → side-by-side diff preview → accept or reject.
- Files are stored with a trailing newline. Dirty checks compare against a normalized saved snapshot.
Getting Started
Requirements: Go 1.25.0 or later.
git clone https://github.com/user/dmed.git
cd dmed
make build
./dmed # or dmed.exe on Windows
Or install directly:
go install github.com/user/dmed@latest
Open any file or directory:
./dmed main.go
./dmed ./my-project/