Repository navigation
v0.2.1
dmCode v0.2.1
dmcode is a workspace now. The chat is still the agent you know; the same
window also holds a real code editor — project tree, git, a terminal, splits,
bookmarks and LSP — and switches between them with one key.
⚠️ Two things to read before trusting themThe editor's keys and the terminal panel have been exercised, but not
driven for hours by a person. The frames, the mouse arithmetic and the
chat-mode composition are covered by tests that assert the row counts and
the hit-testing; what is not proven is how the editor feels over a long
session, or how the panels behave on platforms other than the one this was
built on.Sending a picture to a model is still unverified. Attaching and
previewing are confirmed working on Windows against a live session; no
picture has been through a real vision endpoint, so whether theimage_url
data URL dmcode puts on the wire is one a live endpoint accepts is untested.
Please report what breaks.
Install
# macOS / Linux / BSD
curl -fsSL https://raw.githubusercontent.com/dedomorozoff/dmcode/main/install.sh | bash# Windows (PowerShell)
irm https://raw.githubusercontent.com/dedomorozoff/dmcode/main/install.ps1 | iexOr from a checkout:
make install # -> $(go env GOBIN), or GOPATH/binOr with Go 1.26+:
go install github.com/dedomorozoff/dmcode@latestWhat's new since v0.2.0
Three fixes from the workspace's first days, no new surface:
ctrl+ein the editor now returns to the chat — the key that opened the
editor toggles both ways.ctrl+qstill works,F1keeps the help panel,
and the help table and the status hints name the new binding.- The project tree no longer opens itself when the editor is entered. It
answersctrl+b,F9or its own status-bar icon, and otherwise stays
where the user last left it. - Status-icon tooltips no longer freeze over the transcript. Chat mode keeps
tracking the icon strip on mouse motion, so a callout left over from the
editor mode clears on the first move instead of sitting on the screen with
nothing to remove it. ctrl+qquits dmcode from the chat — the key the sidebar has advertised
all along actually works now. Inside the editor it still means "back to
the chat"; from the chat the key ends the program, the wayctrl+cdid
on an empty prompt.- A multi-cursor crash reported from the field is fixed: a line join moved
the lines under the cursors below it without moving the cursors, and the
next backspace sliced past the end of an empty line, taking the whole
session down. Joins now run strictly bottom-up regardless of cursor
order — which also un-skips the higher of two joins — and shift every
cursor at or below the joined line; a stale cursor is clamped instead of
panicking. - Every
edit_fileandwrite_filenow draws what it changed in the
transcript: a header naming the file, real line numbers from the old and
the new text in a gutter, and the code highlighted with the editor's
syntax theme over a dim green or red wash for the added and removed rows. - A
write_filecut off by the model's output limit no longer loses the
turn when the model had narrated first: the re-ask goes ahead, preceded
by a blank line, with a concrete recipe for writing the file in chunks.
When the turn really cannot be saved, the error says what to ask for
next. - The editor's status notes (config reloaded, terminal exited and friends)
no longer surface on the chat screen; the open git panel keeps its
context line. /newand/sessionsnow close the workspace's clean tabs, so the
nextctrl+estarts from a bare editor rather than the previous
conversation's files. A tab with unsaved typing survives the reset.- A fresh program start opens a bare editor too: the workspace no longer
restores the tabs the last run saved. The standalone editor keeps its
session restore.