Skip to content

Releases: yologdev/yoyo-evolve

v0.1.15

Choose a tag to compare

@github-actions github-actions released this 10 Jul 07:36

The catch-up release: Days 87–132, the largest span yet. The headline is the fix for the stop-and-restart friction reported in #389 — auto-continue now consults the provider's own follow-up queue (yoagent 0.9) instead of guessing from response text, so multi-step plans keep moving without manual "continue" prompts. Around it: /spawn grows into a real orchestrator (parallel fan-out, background jobs, rerunnable manifests, worktree handoff with optional draft PRs), a full risk-proprioception subsystem lands (/risk snapshot / validate / accuracy / effectiveness), web_search is rebuilt on the Exa API, yoagent 0.9 brings adaptive thinking and fleet-model pricing (Opus 4.8, Fable 5), and the REPL learns ! shell passthrough, /cd, and /rewind.

Added

  • Auto-continue via follow-up queue — when the model stops with queued work remaining, yoyo continues automatically using yoagent 0.9's follow_up_queue_len() as an authoritative signal, falling back to the text heuristic; pending count surfaces in /status (Days 128, 131)
  • /spawn --parallel — fan out multiple subagent tasks concurrently (max 10), each recorded as a rerunnable JSON manifest; /spawn manifest inspects past fan-outs (Days 125–131)
  • /spawn --bg + completion notifications — background subagent jobs announce when done; collect results with /spawn collect (Day 128)
  • Spawn worktree handoff — workers commit to their worktree branch and report a ready-to-review branch + diffstat; opt-in --pr pushes the branch and opens a draft PR (Days 125–126)
  • Risk subsystem — per-file risk scoring from git-history signals: yoyo risk CLI subcommand, /risk validate against actual breakage, prediction-accuracy tracking in /status, /risk effectiveness (Days 108–130)
  • web_search rebuilt on Exa — replaces the broken DDG scraper; selective deep search for synthesis queries (Days 113, 119)
  • ! shell passthrough — run a command directly from the REPL with zero tokens; !? feeds the last failed command's output into the conversation (Days 126–127)
  • /cd — change working directory with ~ and relative-path support (Day 127)
  • /rewind + auto-stash on /clear/clear stashes the outgoing conversation; /rewind restores it (Day 126)
  • notify_command config — run a user command when a long prompt finishes (opt-in) (Day 126)
  • New providers — GitHub Models and GitHub Copilot join the provider list (Day 124)
  • Sub-agent upgrades — sub-agents inherit skills and can nest one level deep with a hard depth cap (Days 113, 130)
  • set -o pipefail in the bash tool — mid-pipeline failures surface instead of being masked, with a SIGPIPE-141 guard so … | head idioms don't spuriously fail (Day 131)
  • Sectioned system prompt — restructured into named behavioral defaults: evidence and honesty, search craft, change discipline, bounded verification (Day 131)

Improved

  • yoagent 0.9 migration — adaptive thinking support, StopReason::Refusal handling with retreat-size retry, fleet-model pricing (Opus 4.8 / Fable 5 / Sonnet 5) read live from presets (Day 127)
  • Setup wizard stops clobbering config — existing .yoyo.toml is backed up and unmanaged keys preserved (Day 125)
  • Auto-context quality — snake_case/camelCase keyword decomposition and repo-map signatures wired into context injection (Day 116)
  • Safety hardening — detects rm -rf/cp targeting critical system dirs, firewall-flush case variants, chmod 777; fewer heap allocations in command analysis (Days 102–124)
  • Architect editor model is explicit — the silent auto-downgrade map is gone; the editor model is configured, not guessed (Days 124–125)

Fixed

  • Reverse-shell false positivesrsync -c / sync; echo -e no longer trip the netcat detector (word-boundary matching) (Day 131)
  • Anthropic --base-url double-/v1 — guarded after the yoagent 0.9 preset change, with regression tests (Day 127)
  • Risk-score truncationcompute_file_risk_scores returns all files, not just 15 (Day 112)
  • Flaky CI tests — hermetic fixture-repo git helpers, stabilized risk-score sort, env-var race conditions in test suites (Days 110–125)
  • UTF-8 char-boundary panics — remaining inline truncation loops replaced with safe_truncate/safe_byte_index (Days 101–102)

v0.1.11

Choose a tag to compare

@github-actions github-actions released this 13 May 19:50

20 sessions spanning Days 64–74. Prompt caching cuts repeated system prompt costs ~90%, native desktop notifications tell you when long completions finish, clipboard integration via /copy, smarter auto-continue for incomplete responses, error-aware /run, and a deep consolidation arc that deduplicated 13-way token arithmetic, extracted 6+ modules, and cleaned every re-export middleman out of prompt.rs.

Added

  • /revisit command — scan closed/shelved GitHub issues, check feasibility, and track revisit candidates in .yoyo/revisit.json (Day 74)
  • Error-aware /run — when a command fails, shows a colored failure preview and offers to analyze the error with the agent (Day 73)
  • /doctor for Java, Ruby, C/C++ projects — expanded project health checks beyond Rust/Python/Node (Day 73)
  • Output tokens/sec in usage line and /profile — shows generation speed alongside token counts (Day 73)
  • Colored diff preview for write_file — when overwriting an existing file, shows a colored unified diff of the changes (Day 73)
  • Prompt caching via yoagent's CacheConfig — automatic cache_control on system prompt and long tool results, ~90% cost reduction on repeated system prompts; cache hit rate visible in /cost and /tokens (Day 71)
  • Native desktop notifications — OS-level notification + terminal bell when completions take >10s; configurable via notify = false in config (Day 71)
  • /copy command — clipboard integration detecting pbcopy/xclip/wl-copy/clip.exe; subcommands: /copy last, /copy code, /copy all (Day 71)
  • /changes summary subcommand — AI-generated overview of files modified in the current session and why (Day 70)
  • /model list command — browse all known models grouped by provider, with context window sizes (Day 64)
  • Model registry updated — added GPT-5, GPT-5-mini, GPT-5.5, Grok-4, Grok-4-mini, Gemini 2.5 Flash Lite to provider registry and pricing (Days 64, 70)

Improved

  • Auto-continue heuristic strengthened — detects unclosed code fences, numbered lists, and "let me" phrases as incomplete responses; max auto-continues bumped from 3 to 5 (Day 73)
  • Tool recovery with concrete alternative suggestions — retry prompts now suggest specific alternative tools when one fails (e.g. edit_file failing → suggests write_file), improving agent self-recovery (Day 70)
  • Banner shows project context at startup📁 Rust project (yoyo-evolve) on main with auto-detected project type, name, and branch (Day 64)
  • /evolution command — shows CI run status, session stats, and recent evolution history (Day 68)
  • Competitive gap analysis refreshed — updated scorecard against Claude Code, Cursor, Gemini CLI, Codex, and Aider; identified phase transition from missing features to architectural divergences (Day 67)

Fixed

  • Silent .ok() error swallowing in piped mode and retry path — errors now properly propagated instead of silently discarded (Day 68)
  • Silent data loss in save_messages — messages no longer silently dropped across provider/model/thinking switches (Day 70)

Changed (Internal / Architecture)

  • Test coverage expansion — new tests for prompt.rs (stream JSON, PromptOutcome), prompt_retry.rs (diagnose_api_error, build_retry_prompt), tools.rs (TodoTool, RenameSymbolTool, build_tools), commands_bg.rs, main.rs (build_json_output, apply_config_flags), and health check coverage (Days 73–74)
  • Command routing extraction — pure route_command() function extracted from dispatch_command with full test coverage, enabling deterministic testing of command routing (Day 72)
  • accumulate_usage helper — deduplicated 13-way token-accumulation arithmetic across prompt.rs into a single function (Day 66)
  • finish_prompt_epilogue helper — collapsed duplicated 15-line post-prompt epilogue (cost display, bell, context bar) into one call (Day 66)
  • PostPromptContext / ConfigDisplay structs — replaced 13- and 14-parameter functions with named structs (Day 66)
  • 6 module extractions continuing the consolidation arc:
    • conversations.rs from repl.rs — side, quick, and extended conversation handlers (Day 64)
    • prompt_retry.rs from prompt.rs — retry logic, error classification, backoff (Day 64)
    • prompt_utils.rs from prompt.rs — search, highlighting, summarization utilities (Day 64)
    • commands_update.rs from commands_dev.rs/update command (Day 65)
    • commands_tree.rs from commands_dev.rs/tree command (Day 65)
    • Watch-mode auto-detection moved to watch.rs where it belongs (Day 65)
  • prompt.rs reduced from ~2,425 to ~1,300 lines — retry, utility, and re-export middleman cleanup (Days 64, 66–67)
  • commands_dev.rs reduced from ~1,693 to ~714 lines — three command extractions (Day 65)
  • Re-export cleanup — removed pub use middlemen from prompt.rs; all dependents now import directly from source modules (Days 66–67)
  • run_repl readability — architect mode and post-prompt handling extracted into named functions; startup banner pulled into its own function (Days 65–66)
  • Test race condition fixset_current_dir race in parallel tests replaced with parameter-passing approach (Day 64)
  • tool_wrappers.rs extraction — tool decorator types pulled out of tools.rs (Day 64)

v0.1.8

Choose a tag to compare

@github-actions github-actions released this 19 Apr 05:41

Day 50 milestone release — 51 commits spanning Days 36–49. Background processes, colorized blame, proper unified diffs, deep lint subcommands, and 23 shell subcommands wired for direct CLI invocation.

Added

  • /bg background process management — launch, list, view output, and kill background jobs with persistent tracker (Day 45)
  • /blame with colorized output — git blame with syntax-highlighted annotations (Day 48)
  • /changelog command — view recent evolution history from the terminal (Day 44)
  • /lint fix — auto-fix lint warnings (Day 46)
  • /lint pedantic — extra-strict lint pass (Day 46)
  • /lint strict — deny all warnings during lint (Day 46)
  • /lint unsafe — scan for unsafe code usage (Day 46)
  • 23 shell subcommandshelp, version, setup, init, diff, commit, review, blame, grep, find, index, lint, test, doctor, map, tree, run, watch, status, undo, docs, update, pr — all invocable directly from the shell without entering the REPL (Days 48–49)
  • Per-command bash timeout parameter"timeout": N (1–600 seconds) for individual bash tool calls (Day 44)
  • Co-authored-by trailer on /commit — automatically credits the AI in git commit metadata (Day 43)

Improved

  • Proper unified diffs (LCS-based)edit_file operations now show real unified diffs with context lines instead of walls of red/green (Day 48)
  • Comprehensive categorized help — all 68+ REPL commands listed with descriptions, organized by category (Day 49)
  • Piped mode gracefully handles slash-command input — no longer sends /help etc. to the model as a real prompt (Day 47)
  • Streaming output for /run and /watch — live output rendering instead of buffered display (Day 45)
  • /status shows session elapsed time and turn count — richer session awareness (Day 43)

Fixed

  • Dead code and unused annotation cleanup — removed stale #[allow(dead_code)] markers and unused code paths (Day 48)
  • Destructive-git-command guard in run_git()#[cfg(test)] guard prevents tests from accidentally committing/reverting in the real repo (Day 45)

v0.1.7

Choose a tag to compare

@github-actions github-actions released this 05 Apr 10:03

Patch release with critical bug fixes — UTF-8 crash prevention, Windows build support, and sub-agent security hardening.

Fixed

  • UTF-8 panic in tool outputstrip_ansi_codes and line_category no longer crash on multi-byte characters; safe char-boundary checks throughout string processing (Issue #250, Day 36)
  • Windows build — Unix-only PermissionsExt import in /update command now behind #[cfg(unix)], allowing cross-platform compilation (Issue #248, Day 36)
  • Sub-agent directory restriction bypass — sub-agents now inherit parent's directory restrictions via ArcGuardedTool wrapper (Day 35)
  • Audit timestamp — replaced shell date call with pure Rust chrono for reliable audit logging (Day 35)

Added

  • --print-system-prompt flag — print the assembled system prompt and exit, for prompt transparency and debugging (Day 35)
  • /context system subcommand — display system prompt broken into sections with line counts, token estimates, and previews (Day 35)
  • Fork-friendly infrastructurescripts/common.sh auto-detects repo owner/name, workflows parameterized for forks, new fork guide in docs (Day 35)
  • --provider typo warning — warns when provider name looks like a misspelling of a known provider (Day 35)

v0.1.5

Choose a tag to compare

@github-actions github-actions released this 01 Apr 11:50

Feature release adding provider failover reliability, AWS Bedrock support, structural repo mapping, and inline command hints — built across Days 29–32.

Added

  • Startup update notification — non-blocking check against GitHub releases on REPL startup; shows a yellow notification when a newer version exists; skipped in piped/prompt modes; disable with --no-update-check or YOYO_NO_UPDATE_CHECK=1 (Day 32)
  • /map command — structural repo map with ast-grep backend and regex fallback, showing file symbols and relationships (Day 29)
  • AWS Bedrock provider — full end-to-end support with BedrockConverseStream for Claude 3 models via AWS credentials (Day 30)
  • REPL inline command hints — type /he and see dimmed lp — Show help suggestions for faster command discovery (Day 30)
  • --fallback provider failover — auto-switch to backup provider on API failure, with configurable provider priority (Day 31)

Improved

  • Hook system extracted — Hook trait, HookRegistry, AuditHook, ShellHook consolidated into src/hooks.rs for better modularity (Day 31)
  • Config loading consolidated — single load_config_file() eliminates 3 redundant config reads and improves error handling (Day 31)

Fixed

  • Permission prompt hidden behind spinner — stop spinner before prompting to prevent UI interference (Issue #224) (Day 30)
  • MiniMax stream duplication — exclude "stream ended" from auto-retry to prevent infinite loops (Issue #222) (Day 30)
  • write_file empty content — validation + confirmation prompt for empty writes to prevent accidental data loss (Issues #218, #219) (Day 30)
  • --fallback in piped mode — fallback retry now works in piped and --prompt modes, with proper non-zero exit codes on failure (Day 32, Issue #230)

v0.1.4

Choose a tag to compare

@github-actions github-actions released this 28 Mar 04:42

Feature release adding agent delegation, interactive questioning, task tracking, context management strategies, and provider resilience — built across Days 24–28.

Added

  • SubAgentTool — model can delegate complex subtasks to a fresh agent with its own context window, inheriting the parent's provider/model/key (Day 25)
  • AskUserTool — model can ask directed questions mid-turn instead of guessing; only available in interactive mode (Day 25)
  • TodoTool — agent-accessible task tracking during autonomous runs, shared state with /todo command (Day 26)
  • --context-strategy <mode> — choose context management: compaction (default) or checkpoint for checkpoint-restart on overflow (Day 25)
  • Proactive context compaction — 70% threshold check before prompt attempts to prevent context overflow errors (Day 24)
  • ~/.yoyo.toml config path — home directory config file now correctly searched alongside project-level .yoyo.toml (Day 27)
  • MiniMax provider — option 11 in setup wizard via yoagent's ModelConfig::minimax() (Day 25)
  • MCP server config--mcp flag connects to Model Context Protocol servers via stdio transport; configurable in .yoyo.toml (Day 25)
  • Audit log--audit flag / YOYO_AUDIT=1 env var records tool calls to .yoyo/audit.jsonl for debugging and transparency (Day 24)

Improved

  • Stream error recovery — auto-retry on transient errors including "overloaded", "stream ended", "unexpected eof", and "broken pipe" (Day 26)
  • /tokens display — clearer context vs cumulative labeling for token usage (Day 25)
  • Bell suppressionYOYO_NO_BELL=1 env var suppresses terminal bell in CI/piped environments (Day 24)

Fixed

  • Flaky todo tests — isolated global state with serial_test crate to prevent test interference (Day 26)
  • /web panic — non-ASCII HTML content no longer causes panics via from_utf8_lossy handling (Day 25)
  • Config path mismatch~/.yoyo.toml is now actually searched as documented (Day 27)

v0.1.2

Choose a tag to compare

@github-actions github-actions released this 22 Mar 07:39

Feature release adding per-command help, inline file mentions, new commands, and polished rendering — built across Days 20–22.

Added

  • Per-command /help <command> — detailed usage, examples, and flags for any slash command (Day 21)
  • /grep command — direct file search from the REPL without an API round-trip (Day 21)
  • /git stash subcommandsave, pop, list, apply, drop for git stash management (Day 21)
  • Inline @file mentions@path in prompts expands to file contents; supports line ranges @file:10-20 and image files (Day 21)
  • First-run welcome & setup guide — detects first run, shows welcome message, guides API key and model configuration (Day 22)
  • Visual section headers — output hierarchy with section dividers for clearer structure (Day 22)

Improved

  • Markdown rendering — lists, italic, blockquotes, and horizontal rules now render properly with ANSI formatting (Day 21)
  • /diff with inline colored patches — diff output shows +/- lines with red/green highlighting (Day 22)
  • Code block streaming — token-by-token instead of line-buffered; tokens now flow immediately during code output (Day 21)
  • Architecture documentation — Mermaid diagrams added to mdbook docs (Day 21)
  • run_git() helper deduplication — consolidated repeated git command patterns into shared helper (Day 20)
  • configure_agent() provider setup deduplication — cleaned up provider configuration logic (Day 20)
  • Tool output summaries — richer context for read_file, edit_file, search, and bash tool results (Day 21)

Fixed

  • Code block streaming buffering — tokens inside code blocks now flow immediately instead of buffering entire lines (Day 21)
  • Missing transition separator — added separator between thinking output and text response sections (Day 22)

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 21 Mar 06:08

Bug fix release addressing two community-reported issues.

Fixed

  • Image support broken via /add — images added with /add photo.png were base64-encoded but injected as plain text content blocks instead of proper image content blocks, so the model couldn't actually see them. Now /add detects image files (JPEG, PNG, GIF, WebP) and sends them as real image blocks the model can interpret. Closes #138.
  • Streaming output appeared all at once — three root causes fixed: (1) spinner stop had a race condition that could prevent the clear sequence from executing, now clears synchronously; (2) thinking tokens went to stdout causing interleaving with text, now routed to stderr; (3) no separator between thinking and text output, now inserts a newline on transition. Also reduced the line-start resolve threshold so common short first tokens flush immediately. Closes #137.

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 19 Mar 21:19

The initial release. Everything below was built from scratch over 19 days of autonomous evolution, starting from a 200-line CLI example.

Added

Core Agent Loop

  • Streaming text output — tokens stream to the terminal as they arrive, not after completion
  • Multi-turn conversation with full history tracking
  • Thinking/reasoning display — extended thinking shown dimmed below responses
  • Automatic API retry with exponential backoff (3 retries via yoagent)
  • Rate limit handling — respects retry-after headers on 429 responses
  • Parallel tool execution via yoagent 0.6's ToolExecutionStrategy::Parallel
  • Subagent spawning/spawn delegates focused tasks to a child agent with scoped context
  • Tool output streamingToolExecutionUpdate events shown as they arrive

Tools

  • bash — run shell commands with interactive confirmation
  • read_file — read files with optional offset/limit
  • write_file — create or overwrite files with content preview
  • edit_file — surgical text replacement with colored inline diffs (red/green removed/added lines)
  • search — regex-powered grep across files
  • list_files — directory listing with glob filtering

REPL & Interactive Features

  • Interactive REPL with rustyline — arrow keys, Ctrl-A/E/K/W, persistent history (~/.local/share/yoyo/history)
  • Tab completion — slash commands, file paths, and argument-aware suggestions (model values, git subcommands, /pr subcommands)
  • Multi-line input via backslash continuation and fenced code blocks
  • Markdown rendering — incremental ANSI formatting: headers, bold, italic, code blocks with syntax-labeled headers, horizontal rules
  • Syntax highlighting — language-aware ANSI coloring for Rust, Python, JS/TS, Go, Shell, C/C++, JSON, YAML, TOML
  • Braille spinner animation while waiting for AI responses
  • Conversation bookmarks/mark, /jump, /marks to name and revisit points in a conversation
  • Conversation search/search with highlighted matches in results
  • Fuzzy file search/find with scoring, git-aware file listing, top-10 ranked results
  • Direct shell escape/run <cmd> and !<cmd> execute commands without an API round-trip
  • Elapsed time display after each response, plus per-tool execution timing (✓ (1.2s))

Git Integration

  • Git branch display in REPL prompt
  • /diff — full git status plus diff, with file-level insertion/deletion summary
  • /commit — AI-generated commit messages from staged changes
  • /undo — revert last commit, including cleanup of untracked files
  • /git — shortcuts for status, log, diff, branch
  • /pr — full PR workflow: list, view, create [--draft], diff, comment, checkout
  • /review — AI-powered code review of staged/unstaged changes against main
  • /changes — show files modified (written/edited) during the current session

Project Tooling

  • /health — run full build/test/clippy/fmt diagnostic for Rust, Node, Python, Go, and Make projects
  • /fix — run the check gauntlet and auto-apply fixes for failures
  • /test — auto-detect project type and run the right test command
  • /lint — auto-detect project type and run the right linter
  • /init — scan project structure and generate a starter YOYO.md context file
  • /index — build a lightweight codebase index: file counts, language breakdown, key files
  • /docs — quick documentation/API lookup without leaving the REPL
  • /tree — project structure visualization

Session Management

  • /save and /load — persist and restore conversation sessions as JSON
  • --continue/-c — auto-load the most recent session on startup
  • Auto-save on exit — sessions saved automatically on clean exit and crash recovery
  • Auto-compaction at 80% context window usage, plus manual /compact
  • /tokens — visual token usage bar with percentage
  • /cost — per-model input/output/cache pricing breakdown
  • /status — show current session state

Context & Memory

  • Project context files — auto-loads YOYO.md, CLAUDE.md, and .yoyo/instructions.md
  • Git-aware context — recently changed files injected into system prompt
  • Codebase indexing/index summarizes project structure for the agent
  • Project memories/remember, /memories, /forget for persistent cross-session notes stored in .yoyo/memory.json

Configuration

  • Config file support.yoyo.toml (per-project) and ~/.config/yoyo/config.toml (global)
  • --model / /model — select or switch models mid-session
  • --provider / /provider — switch between 11 provider backends mid-session (Anthropic, OpenAI, Google, Ollama, z.ai, and more)
  • --thinking / /think — toggle extended thinking level
  • --temperature — sampling randomness control (0.0–1.0)
  • --max-tokens — cap response length
  • --max-turns — limit agent turns per prompt (useful for scripted runs)
  • --system / --system-file — custom system prompts
  • --verbose/-v — show full tool arguments and result previews
  • --output/-o — pipe response to a file
  • --api-key — pass API key directly instead of relying on environment
  • /config — display all active settings

Permission System

  • Interactive tool approval — confirm prompts for bash, write_file, and edit_file with content/diff preview
  • "Always" option — persists per-session via AtomicBool, so you only approve once
  • --yes/-y — auto-approve all tool executions
  • --allow / --deny — glob-based allowlist/blocklist for tool patterns
  • --allow-dir / --deny-dir — directory restrictions with canonicalized path checks preventing traversal
  • [permissions] and [directories] config file sections
  • Deny-overrides-allow policy

Extensibility

  • MCP server support--mcp connects to MCP servers via stdio transport
  • OpenAPI tool loading--openapi <spec> registers tools from OpenAPI specifications
  • Skills system--skills <dir> loads markdown skill files with YAML frontmatter

CLI Modes

  • Interactive REPL — default mode with full feature set
  • Single-shot prompt--prompt/-p "question" for one-off queries
  • Piped/stdin mode — reads from stdin when not a TTY, auto-disables colors
  • Color control--no-color flag, NO_COLOR env var, auto-detection for non-TTY

Other

  • --help / --version / /version — CLI metadata
  • /help — grouped command reference (Navigation, Git, Project, Session, Config)
  • Ctrl+C handling — graceful interrupt
  • Unknown flag warnings — instead of silent ignoring
  • Unambiguous prefix matching for slash commands (with greedy-match fix)

Architecture

The codebase evolved from a single 200-line main.rs to 12 focused modules (~17,400 lines):

Module Lines Responsibility
main.rs ~1,470 Entry point, tool building, AgentConfig, model config
cli.rs ~2,360 CLI argument parsing, config file loading, conversation bookmarks
commands.rs ~2,990 Slash command dispatch and grouped /help
commands_git.rs ~1,190 Git commands: /diff, /commit, /pr, /review, /changes
commands_project.rs ~1,950 Project commands: /health, /fix, /test, /lint, /init, /index
commands_session.rs ~465 Session commands: /save, /load, /compact, /tokens, /cost
docs.rs ~520 /docs crate API lookup
format.rs ~3,280 Output formatting, ANSI colors, markdown rendering, syntax highlighting, cost tracking
git.rs ~790 Git operations: branch detection, diff handling, PR interactions
memory.rs ~375 Project memory system (.yoyo/memory.json)
prompt.rs ~1,090 System prompt construction, project context assembly
repl.rs ~880 REPL loop, input handling, tab completion

Testing

  • 800 tests (733 unit + 67 integration)
  • Integration tests run the actual binary as a subprocess — dogfooding real invocations
  • Coverage includes: CLI flag validation, command parsing, error quality, exit codes, output formatting, edge cases (1000-char model names, Unicode emoji in arguments), project type detection, fuzzy scoring, health checks, git operations, session management, markdown rendering, cost calculation, permission logic, and more
  • Mutation testing infrastructure via cargo-mutants with threshold-based pass/fail

Documentation

  • mdbook guide at docs/book/ covering installation, all CLI flags, every REPL command, multi-line input, models, system prompts, thinking, skills, sessions, context management, git integration, cost tracking, troubleshooting, and permissions
  • Landing page at docs/index.html
  • In-code /help with grouped categories

Evolution Infrastructure

  • 3-phase evolution pipeline (scripts/evolve.sh): plan → implement → communicate
  • GitHub issue integration — reads community issues, self-filed issues, and help-wanted labels
  • Journal (JOURNAL.md) — chronological log of every evolution session
  • Learnings (memory/learnings.jsonl) — self-reflections archive (JSONL, append-only with timestamps and source attribution)
  • Skills — structured markdown guides for self-assessment, evolution, communication, research, release, and social interaction
  • CI — build, test, clippy (warnings as errors), fmt check on every push/PR

Development Timeline

Day Highlights
0 Born — 200-line CLI on yoagent
1 Panic fixes, --help/--version, multi-line input, /save//load, Ctrl+C, git branch prompt, custom system prompts
2 Tool execution timing, /compact, /undo, --thinking, --continue, --prompt, auto-compaction, format_token_count fix
3 mdbook documentation, /model UX fix
4 Module split (cli, format, prompt), --max-tokens, /version, NO_COLOR, --no-color, /diff improvements, /undo cleanup
5 --verbose, /init,...
Read more