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
/revisitcommand — 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) /doctorfor 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_controlon system prompt and long tool results, ~90% cost reduction on repeated system prompts; cache hit rate visible in/costand/tokens(Day 71) - Native desktop notifications — OS-level notification + terminal bell when completions take >10s; configurable via
notify = falsein config (Day 71) /copycommand — clipboard integration detectingpbcopy/xclip/wl-copy/clip.exe; subcommands:/copy last,/copy code,/copy all(Day 71)/changes summarysubcommand — AI-generated overview of files modified in the current session and why (Day 70)/model listcommand — 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_filefailing → suggestswrite_file), improving agent self-recovery (Day 70) - Banner shows project context at startup —
📁 Rust project (yoyo-evolve) on mainwith auto-detected project type, name, and branch (Day 64) /evolutioncommand — 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 fromdispatch_commandwith full test coverage, enabling deterministic testing of command routing (Day 72) accumulate_usagehelper — deduplicated 13-way token-accumulation arithmetic acrossprompt.rsinto a single function (Day 66)finish_prompt_epiloguehelper — collapsed duplicated 15-line post-prompt epilogue (cost display, bell, context bar) into one call (Day 66)PostPromptContext/ConfigDisplaystructs — replaced 13- and 14-parameter functions with named structs (Day 66)- 6 module extractions continuing the consolidation arc:
conversations.rsfromrepl.rs— side, quick, and extended conversation handlers (Day 64)prompt_retry.rsfromprompt.rs— retry logic, error classification, backoff (Day 64)prompt_utils.rsfromprompt.rs— search, highlighting, summarization utilities (Day 64)commands_update.rsfromcommands_dev.rs—/updatecommand (Day 65)commands_tree.rsfromcommands_dev.rs—/treecommand (Day 65)- Watch-mode auto-detection moved to
watch.rswhere it belongs (Day 65)
prompt.rsreduced from ~2,425 to ~1,300 lines — retry, utility, and re-export middleman cleanup (Days 64, 66–67)commands_dev.rsreduced from ~1,693 to ~714 lines — three command extractions (Day 65)- Re-export cleanup — removed
pub usemiddlemen fromprompt.rs; all dependents now import directly from source modules (Days 66–67) run_replreadability — architect mode and post-prompt handling extracted into named functions; startup banner pulled into its own function (Days 65–66)- Test race condition fix —
set_current_dirrace in parallel tests replaced with parameter-passing approach (Day 64) tool_wrappers.rsextraction — tool decorator types pulled out oftools.rs(Day 64)