Skip to content

Releases: dedomorozoff/dmed

v0.8.4

Choose a tag to compare

@github-actions github-actions released this 02 Oct 10:45

{"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

Choose a tag to compare

@github-actions github-actions released this 24 Sep 18:22

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.
  • 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

Choose a tag to compare

@github-actions github-actions released this 21 Sep 15:20

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 | sh

Build from source:

git clone https://github.com/dedomorozoff/dmed.git && cd dmed && make build

Scriptable 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/from origin over 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-aligned author · when annotations 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: connect wires 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_detect toggles 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 Cyrillic Code/Text, and Ctrl+G used 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 so g/G top/bottom moves survive.
  • DBGp continued/stopped race — EventContinued is now emitted before the next continuation command, so the stopped→running transition no longer drops (the panel could get stuck in stopped while the debuggee ran).
  • DBGp nil-connection guard — Close/sendText are safe before the <init> handshake accepts a session.

Full Changelog: v0.8.1...v0.8.2

v0.8.1

Choose a tag to compare

@github-actions github-actions released this 20 Sep 11:37

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 | sh

Build from source:

git clone https://github.com/dedomorozoff/dmed.git && cd dmed && make build

Scriptable 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 / F5 run/continue, Shift+F5 stop, F6 step over, F7 step in, Shift+F7 step 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_json let 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+M toggle, Alt+N navigate; 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); fixed PgDn app-wide (bubbletea v2 sends pgdown).

🐛 Fixes

  • Ctrl+P palette no longer lists duplicate commands — the duplicated duplicate_line … goto_definition block has been removed (45 unique commands, no repeats).
  • Debugger launch ordering — launch → setBreakpoints → configurationDone (Delve rejects breakpoints before launch), so F5 and breakpoints work reliably; F5 now 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

Choose a tag to compare

@github-actions github-actions released this 16 Sep 15:28

dmed v0.7.5

Editor

  • Go to definition — F12 or Ctrl+Click jumps 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

Choose a tag to compare

@github-actions github-actions released this 12 Sep 08:44

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+\ and Ctrl+Alt+H too)
  • 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-ai CLI

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

Choose a tag to compare

@github-actions github-actions released this 01 Sep 18:08

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.conf and applied on hot-reload — no restart needed.
  • A new lang config 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 .lua files into ~/.dmed/plugins/ or <project>/.dmed/plugins/ to add
    keybindings, command-palette commands and event hooks (file_open, save,
    ready) with a dmed.* 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,
    so make install works out of the box on FreeBSD.

v0.5.2

Choose a tag to compare

@github-actions github-actions released this 31 Aug 13:18

dmEd v0.5.2

A terminal code editor that treats AI agents as first-class participants.

Highlights

  • AI agents (M4) — Alt+L opens 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+D selects the next occurrence, Alt+Click adds 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 so j/k navigation always works; Enter on the current branch reports "already on X"; letter commands are case-insensitive and q goes 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

Choose a tag to compare

@dedomorozoff dedomorozoff released this 27 Aug 13:41

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

Choose a tag to compare

@dedomorozoff dedomorozoff released this 25 Aug 15:45

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 git binary 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+])

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/