Skip to content

v0.13.0

Latest

Choose a tag to compare

@github-actions github-actions released this 09 May 12:04

Changelog

All notable changes to Enno will be documented in this file.

The project follows Semantic Versioning. While the public API is still evolving, releases use the v0.x.y series.

[0.13.0] - 2026-05-09

Changed (breaking)

  • Remove the sdk package; merge all types and configuration into the root enno package. Users now call enno.NewAgent(enno.Config{...}) directly instead of sdk.NewAgent(sdk.Config{...}).
  • Add a setup package (github.com/dean2021/enno/setup) that must be blank-imported to enable built-in tool assembly. Without import _ "github.com/dean2021/enno/setup", using BuiltinTools in enno.Config returns an error.
  • Move SystemPromptSection, BuiltinTools, all tool config types (TaskGraphTool, FilesystemTool, ShellTool, GrepTool, GlobTool, FetchURLTool, SubagentTool, LoadSkillTool, CompactTool), ToolPermissions, and PermissionMode constants into the root enno package.
  • Move AssembleConfig (previously sdk.AssembleConfig) into the root enno package.
  • enno.Config now includes SystemPromptSections, BuiltinTools, Permissions, and CustomTools fields alongside existing Tools, SystemPrompt, etc.

Migration

// Before (v0.12.0):
import (
    "github.com/dean2021/enno"
    "github.com/dean2021/enno/sdk"
)
agent, err := sdk.NewAgent(sdk.Config{...})

// After (v0.13.0):
import (
    "github.com/dean2021/enno"
    _ "github.com/dean2021/enno/setup"
)
agent, err := enno.NewAgent(enno.Config{...})

[0.12.0] - 2026-05-09

Changed (breaking)

  • Move built-in tool implementations from internal/builtintools/* to builtintools/*.
  • Move SDK runtime prompt helpers from internal/systemprompt to prompt.
  • Update all documentation to reflect the new package paths.

0.11.0 - 2026-05-09

Changed

  • Move the former in-repo CLI to the standalone Godo project at ../godo-coding-agent; Enno now focuses on SDK, providers, and built-in tool assembly.
  • Remove CLI-owned code and CLI release/install targets from the Enno SDK repository.

Documentation

  • Document the future standalone CLI module boundary, including public SDK import shape, migration directories, and split changelog strategy.

0.10.0 - 2026-05-09

Added

  • Add the built-in fetch_url tool for fetching HTTP/HTTPS pages and converting HTML to readable markdown.
  • Refactor CLI system prompt assembly into named sections, add best-effort project instruction loading from AGENTS.md / CLAUDE.md, and keep SDK SystemPrompt control explicit.
  • Add sdk.SystemPromptSection and Config.SystemPromptSections so applications can inject named prompt sections while keeping agent identity application-owned.

Changed

  • Remove default coding-agent identity from the SDK; CLI now owns its identity explicitly through internal/cliconfig.

0.9.0 - 2026-05-08

Added

  • Add a complete offline SDK walkthrough under examples/sdk_walkthrough.
  • Add github.com/dean2021/enno/sdk for high-level built-in tool configuration and tool permissions.

Changed (breaking)

  • Move built-in tool implementations from public tools/* packages to builtintools/*.
  • Migrate CLI assembly to sdk.Config.BuiltinTools and add YAML allowed_tools, disallowed_tools, and permission_mode.

Documentation

  • Clarify high-level SDK guidance and refresh architecture/config references for the built-in tool API.

0.8.0 - 2026-05-08

Changed (breaking)

  • Replace the legacy text-only Agent.Run(ctx, input) path with Agent.Run(ctx, session, input) (RunResult, error).
  • Remove Agent.RunDetailed, Agent.RunSession, Agent.Messages, and Agent.Reset; callers now own conversation state through Session.
  • Update Agent.RunStream to require an explicit Session.

CLI

  • Migrate cmd/enno, plain REPL fallback, and Bubble Tea TUI to the explicit Session API.
  • Keep CLI output behavior unchanged by printing RunResult.Content.

Documentation

  • Update README, SDK guide, design notes, migration guide, examples, and agent guidance for the explicit-session SDK.

0.7.0 - 2026-05-08

Added

  • SDK detailed run APIs with RunDetailed, RunStream, RunSession, RunResult, per-round usage, stop reasons, and tool-call metadata.
  • Provider-neutral request options for temperature, max output tokens, tool choice, response formats, and metadata.
  • Lifecycle hooks and policies for provider calls, tool calls, compaction, and task reminders.
  • Session cloning/reset support for applications that persist or branch conversation state.
  • Schema builder helpers, structured tool results, and early tool definition validation.
  • Consistent built-in tool output limits and timeout options across filesystem, shell, grep, glob, and subagent tools.

Changed

  • Refactored the agent loop around explicit sessions, policies, hooks, and detailed execution state.
  • OpenAI-compatible and Anthropic providers now map shared SDK request options where supported.
  • OpenAI-compatible provider now supports Chat Completions streaming.

Documentation

  • Expanded SDK usage and design docs for advanced APIs, hooks, streaming, sessions, and built-in tool options.
  • Added a migration guide and marked the SDK improvement checklist complete.

0.6.2 - 2026-05-08

Documentation

0.6.1 - 2026-05-07

Fixed

  • compaction_impl: declare compaction default const values as untyped integers in one block (avoids “only the first constant has an explicit type” / mixed typing in the same group). Behavior unchanged.

0.6.0 - 2026-05-07

Changed (breaking)

  • grep / glob: registered tool names are now grep and glob (were Grep / Glob).
  • subagent: child-agent tool registered name is subagent (was task).

CLI / TUI

  • Button-only mouse tracking (MouseButtonEvents): wheel scrolls the main transcript when the pointer is over that pane; ↑ / ↓ navigate input history; drag-select may require Shift in some terminals.
  • Removed F9 transcript-to-clipboard shortcut.

Documentation

  • README, usage, design, examples, and agent guidance updated for renames and TUI behavior.

0.5.0 - 2025-07-11

Added

  • tools/taskgraph: persistent DAG task plan (task_create, task_update, task_list, task_get). CLI stores JSON under ~/.enno/tasks/<session_id>/ (UUID v4 per run); library default remains Root/.tasks/ when TasksDir is empty. CLI YAML task_graph / --no-task-graph (default: enabled). Replaces the removed todo tool.
  • tools/grep: Grep tool (Claude Code–compatible name) running rg with path scope under Config.Root; CLI YAML grep / flag --no-grep (default: grep enabled). Requires ripgrep installed.
  • tools/glob: Glob tool (Claude Code–compatible name) listing files with rg --files under Config.Root; CLI YAML glob / flag --no-glob (default: glob enabled). Requires ripgrep on PATH.
  • Optional context compaction (Config.Compaction): micro-trimming of older long tool results, automatic summarization when estimated input usage crosses a threshold (writes JSONL transcripts under TranscriptDir, default ~/.enno/transcripts when enabled), and a manual compact tool (same summarization path; must be the only tool call in that turn). Default off; extra model calls and disk writes when enabled. Implementation lives in compaction_impl.go in the root package (a separate compaction subpackage would import-cycle with enno).
  • tools/compact: registers the compact tool name for the runtime; CLI appends it when compaction is set in config.yaml.
  • tools/subagent: optional task tool that runs a child enno.Agent with isolated history; CLI can enable it with subagent: true in ~/.enno/config.yaml or disable with --no-subagent.
  • tools/loadskill: load SKILL.md skills from a directory, inject short descriptions into the system prompt, and register load_skill for on-demand full text; CLI merges default ~/.enno/skills with optional skills_extra_dirs, skills_dir, and --skills-dir (later roots override same skill name).

Fixed

  • TUI: use button-level mouse mode (not full motion/drag reporting) so the main transcript can be click-dragged for copy again; keep wheel scroll routing.

Removed

  • tools/todo and the todo tool: use task_* task graph tools instead. Agent “plan reminder” now tracks task_create / task_update / task_list / task_get and injects <reminder>Update your task plan.</reminder>.

Changed

  • CLI:首次自动创建的 ~/.enno/config.yaml 模板默认包含 compaction.enabled: true(仍可改为 false);库 API 仍为 Compaction == nil 时不启用压缩。
  • Compaction:摘要提示改为 <analysis> / <summary> 结构并后处理为正文;支持 ModelContextTokens + buffer 阈值、MicroCompactToolNames、上一轮 API InputTokens 与估算取 max、摘要失败时半量重试、SkipOnSummarizeError 与同一 Run 内连续失败熔断;手动 compact 仍严格失败即报错。
  • TUI: the main transcript scrolls only with the mouse wheel over that pane; keyboard paging keys no longer scroll it.

0.4.0 - 2026-05-08

Added

  • Save user input history to ~/.enno/history.jsonl in JSONL format with display text, timestamp, project path, and session ID.
  • TUI prompt supports Up/Down arrow keys to navigate input history with draft preservation.
  • Load last 500 history entries on TUI startup for immediate navigation.
  • Add internal/history package with Recorder (append-only writer) and LoadRecent (reader).
  • Add Project and SessionID fields to CLI config for history tracking.
  • Generate random session ID per CLI invocation.

Changed

  • Main view scrolling changed from Up/Down arrows to PgUp/PgDn, freeing Up/Down for input history navigation.
  • Updated status bar hints to reflect new key bindings.

0.3.1 - 2026-05-07

Fixed

  • TUI: keep the main transcript following the end of the output when "follow latest" is enabled (avoid canceling tview track-end mode after scroll).

Changed

  • TUI: softer rounded borders, muted border and title colors, and consistent focus border glyphs between the transcript and prompt panes.
  • TUI: animated transcript title while waiting on the model during network latency.
  • TUI: use a distinct color for the tool: channel label versus the tool name in the conversation stream.

0.3.0 - 2026-05-07

Changed

  • Replaced the CLI terminal UI dependency from tui-go to tview.

Added

  • Added Agent events and CLI observability panels for model calls, tool calls, tool results, and token usage.

0.2.0 - 2026-05-07

Changed

  • Changed CLI provider configuration to read model, API key, base URL, and max tokens from config.yaml only.
  • Moved CLI REPL/TUI implementation from the public runner package to internal/cliui.
  • Removed workdir and prompt from CLI YAML configuration.
  • Changed the CLI interactive mode to use a tui-go terminal UI.
  • Removed CLI support for ENNO_* provider configuration environment variables.

Added

  • Added automatic creation of a commented ~/.enno/config.yaml template when the default CLI config file is missing.
  • Added internal CLI UI tests for the non-terminal REPL fallback.
  • Added CLI YAML config loading from ~/.enno/config.yaml and --config.
  • Added CLI config tests for YAML-only provider configuration.
  • Added CLI configuration tests for required model and OpenAI-compatible base URL settings.

0.1.0 - 2026-05-07

Added

  • Introduced the provider-neutral enno core package with Agent, Config, Provider, Tool, and message types.
  • Added OpenAI-compatible and Anthropic provider packages.
  • Added optional built-in tools for todo tracking, filesystem access, and shell execution.
  • Added reusable runner.REPL and runner.Once helpers.
  • Added installable CLI under cmd/enno.
  • Added usage, design, README, and agent guidance documentation.
  • Added repository verification through make verify.

Full Changelog: v0.12.0...v0.13.0