Skip to content

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 03 Oct 05:32
· 65 commits to main since this release

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 them

The 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 the image_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 | iex

Or from a checkout:

make install       # -> $(go env GOBIN), or GOPATH/bin

Or with Go 1.26+:

go install github.com/dedomorozoff/dmcode@latest

What's new since v0.2.0

Three fixes from the workspace's first days, no new surface:

  • ctrl+e in the editor now returns to the chat — the key that opened the
    editor toggles both ways. ctrl+q still works, F1 keeps 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
    answers ctrl+b, F9 or 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+q quits 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 way ctrl+c did
    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_file and write_file now 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_file cut 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.
  • /new and /sessions now close the workspace's clean tabs, so the
    next ctrl+e starts 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.