• v1.2.0 b0fcfb8cb2

    evileko released this 2026-08-26 19:15:37 -04:00 | 135 commits to main since this release

    evilcode v1.2.0 — the Live panel

    The headline of this release is the Live panel: the side split is now a real second viewport that shows whole files, scrolls under the mouse, and can follow the agent as it works. The release also restores full context on resumed sessions, makes reasoning effort work for models the name heuristic doesn't recognize, and switches the default theme.

    What changed

    The Live panel (split view upgrade)

    • Whole files, not truncated diffs. Clicking a write/edit block opens the entire file in the side pane with the change marked in the gutter — added lines numbered with +, deleted lines inserted where they were removed — centered on the first hunk. Unreadable or binary files fall back to the diff alone.
    • Ctrl+L live view. The split follows the agent: every read/write/edit tool result opens the touched file in the pane — whole file with the diff marked for edits, highlighted source for reads — scrolled to the change, updating as each edit streams in. A green live tag sits bottom-left while active. Clicking a file or closing the split turns live view off; scrolling the pane away pauses the follow and scrolling back to the top resumes it. Ctrl+L is a true toggle: off → on opens the pane, on → off closes it.
    • Wheel scrolls the side under the mouse. The wheel drives the pane when the pointer is over it and the transcript when it is not, with the panel scrolling independently instead of truncating. Wheel direction is natural (up = toward the top of the file).
    • ctrl+q closes the split. Plain q is an ordinary letter again and types even while the split is open; ctrl+q closes the split (quick view first, then the panel and live view) regardless of composer state. The pane footer and the help overlay show the bindings.
    • Numbered read views. Read quick views (and live view's read tracking) show line numbers like the diff views, so a read and an edit of the same file line up.
    • No more per-frame lag. The pane body is cached across frames (keyed by content identity, path, diff, mode, width, and palette), so a warm frame costs ~1.2ms instead of ~50ms per wheel notch on a 1000-line file. A guard test pins that the wheel frame cost does not grow with session length.
    • Footer stays put. The panel footer stays on the last visible row when the chat overflows, and the pane only auto-updates in live view.

    Resumed sessions keep their context

    Resuming a session (or viewing it from another window) dropped half of every tool row: bash rows said "bash" with no command or output, and edits had no diff. Tool blocks are now rebuilt from both halves of the conversation — the tool call and its result — so resumed sessions re-render the command, output, target, path, token estimate, and the diff a write/edit produced, including the +/- counts and the whole-file quick view on click. The session picker and start-page previews show real tool rows too.

    Reasoning effort works for unrecognized models

    Setting a reasoning effort on a model the name heuristic doesn't match (e.g. deepseek-v4-flash:0731, kimi-k2.6, minimax-m3) was rejected with "reasoning effort not supported" even though the model advertises thinking. The daemon now enriches via the model's /api/show capability when the heuristic misses, so the offered levels match what the client picker shows. The heuristic still serves matched families without a network call; an unreachable endpoint behaves as before.

    Default theme: catppuccin-frappe (mauve)

    The default theme is now catppuccin-frappe with mauve accents instead of dracula. Syntax highlighting uses chroma's frappe style so code matches the chrome, and the no-op fast path is frappe. Existing configs that state their own theme are untouched.

    Install or update

    Fresh install:

    curl -fsSL https://evileko.dev/evilcode | sh
    

    Existing installations can update in place:

    evilcode update
    

    Source builds require Go 1.26 or newer. This release publishes the Linux/amd64 binary evilcode-linux-amd64.

    Verification

    • go build ./...
    • go test ./internal/...
    • go vet ./...

    SHA-256 for evilcode-linux-amd64:

    485dbf746bbc435d6220e45053cbc9b2692388e25c61b2d49e3919de184b748f
    
    Downloads