-
released this
2026-08-26 00:59:25 -04:00 | 174 commits to main since this releaseevilcode v1.1.3 — deepseek default, picker hints, more idle tips
A small feature release. The agent loop, tool surface, and session model are unchanged; what changed is the out-of-the-box model, how discoverable the model picker's default-setter is, how many niche features the idle tip rotation surfaces, and two fixes to how the daemon path remembers and swaps the model.
What changed
New default model: deepseek-v4-flash:0731 (high)
- The default model is now
deepseek-v4-flash:0731@ollama-cloud(reasoning effort high), routed through Ollama Cloud whenOLLAMA_API_KEYis set, and through the local Ollama daemon (deepseek-v4-flash:0731@ollama-local) when it is not. The previous default wasglm-5.2:cloud. deepseek-v4-flash:0731is a thinking model, so the default routes pin reasoning effort tohighfor both the cloud and local routes. A user's saved per-model preference still overrides this at runtime.- This only affects fresh configs with no
default_modelset. An existingconfig.tomlthat states its owndefault_modelis untouched.
The model picker now tells you how to set the default
- The picker's default-setter (
Ctrl+O) was undiscoverable — it lived only in the one-line key summary above the box, which truncated to a meaninglessCtrl+O · Ctrl+Non narrow terminals. Now:- The key-summary hint keeps the verb at every width, down to
Ctrl+O set defaulton the narrowest. - A contextual
Ctrl+O set as defaulthint appears right at the model the cursor is on, for any selectable model that is not already the default. It is combined with the reasoning-level line when present (e.g.reasoning: high · Ctrl+O set as default), and never shown for an unavailable model.
- The key-summary hint keeps the verb at every width, down to
- No new key binding was added, so filtering the picker by typing (including
dto reachdeepseekmodels) is unchanged.
The idle tip rotation covers the niche features
- The idle
Tipsrotation is the only passive discovery surface — a user who never opens/helpand never presses an undiscovered chord still sees it rotate in the status line and the right-side dock. It went from 5 entries to 16, now covering:- Niche keybindings that had no other passive surface:
Alt+B(send a running tool to the background),Alt+R(cycle reasoning effort),Ctrl+Up(retrieve staged messages),Alt+G(cycle diff mode),Ctrl+P(toggle auto-poke). - The right-side dock widgets and side panel:
Alt+I(info widgets),Alt+X(todo card),Alt+M(side panel). - Niche slash commands only
/helpwould otherwise reveal:/btw(a side question that costs no main context),/rewind(collapse back to a checkpoint).
- Niche keybindings that had no other passive surface:
- A guard test (
TestTipsFitAndRotate) locks in that every tip fits a single status-line row and the rotation visits every entry, so a tip added to the list actually reaches the user.
evilcode updatestops a running daemon- A running daemon holds the old binary in memory, so swapping the file on disk did not change the version it served until a manual restart.
evilcode updatenow requests a graceful daemon shutdown (right after the download verifies, so a failed download never disturbs it) before installing the new binary. No daemon running is a silent no-op; an unreachable one is a warning, not a failure.
Fix:
last_modelactually works through the daemon- Two bugs made the remembered-model preference useless when running through the daemon (the default
evilcode/ecpath):- The daemon resolved a new session's model but never wrote the result back to
last_model, so the file sat at whatever value it booted with. The attach client now persists the resolved session model, mirroring the standalone TUI path. - The daemon loads its config once at
servestart and never re-reads it, so picker model switches were ignored on the next launch. Session builds now refreshlast_modelfrom the config file, so a long-lived daemon honors the model you actually last used.
- The daemon resolved a new session's model but never wrote the result back to
- Guarded by
TestBuildHonorsTheFilesLastModelandTestBuildKeepsLastModelForInMemoryConfig; in-memory test configs stay hermetic.
Install or update
Fresh install:
curl -fsSL https://evileko.dev/evilcode | shExisting installations can update in place:
evilcode updateSource 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:d5384978c0bc8205ff0ec2a70cb6c89be7a53d1f4a62ce5d9708b192936b3090Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The default model is now