Repository navigation
nanocoder v1.25.0
What's Changed
-
Added yolo mode — a new development mode that auto-accepts every tool without exception, including bash commands and destructive git operations (hard reset, force delete, stash drop/clear). Cycles between normal → auto-accept → yolo → plan via Shift+Tab. The status bar turns red when yolo mode is active.
-
Added subagents — isolated child conversations that the LLM can delegate work to. Ships with two built-in agents: Explore (read-only codebase investigation) and Reviewer (code review with actionable feedback). Subagents are defined as markdown files with YAML frontmatter specifying name, description, model, and allowed tools. User-defined subagents can be placed in
.nanocoder/agents/. Managed via the/agentscommand (show,create). Thanks to @BRIJESHKR for the initial subagent implementation. Closes #414. -
Added concurrent subagent execution. The LLM can launch multiple subagents in parallel, each with independent tool sets and live in-place progress rendering via the
AgentProgresscomponent. -
Added subagent tool approval matching main agent behaviour. Subagent write tools prompt for approval and bash always prompts unless in
alwaysAllow. Theagenttool itself no longer requires approval since internal tools have their own gates. -
Redesigned the system prompt into a modular, composable architecture. The monolithic
main-prompt.mdhas been replaced with individual section files undersource/app/prompts/sections/(identity, core principles, coding practices, file editing, tool rules, diagnostics, task management, etc.). The newprompt-builderassembles the prompt dynamically based on the current mode — normal, auto-accept, plan, and scheduler each get a tailored prompt with only the sections and tools relevant to that mode. Includes agenerate-system-promptsscript for offline token counting and prompt inspection. -
Made plan mode useful. Plan mode now enforces read-only tools at the policy level — all mutation tools (write, bash, git commit/push, task management) are blocked, leaving only exploration tools (read, search, find, list, git log/diff/status). The dedicated plan mode system prompt instructs the LLM to investigate thoroughly and produce a structured plan with summary, files to modify, step-by-step approach, dependencies/risks, and open questions — instead of trying to execute changes.
-
Added
/tunecommand for per-session prompt and tool customization. Includes a tune selector UI (Ctrl+T) with tool profiles (full, minimal), adisableNativeToolstoggle for forcing XML fallback, and aggressive compact mode. Tune state persists for the session and is reflected in the mode indicator. -
Centralized tool policy into
ToolManagerso prompt-time tool filtering and runtime approval use the same source of truth. Extractedtool-registry.tsfor cleaner separation of tool definitions from policy logic. -
Added ChatGPT Codex as a provider with OAuth device flow authentication (
/codex-login), streaming response support via a dedicatedStreamingMessagecomponent, and Codex-specific credential management. Includes provider template and setup wizard integration. -
Migrated
web_searchtool from Brave Search scraping to the official Brave Search API. Now requires awebSearch.apiKeyinagents.config.jsonundernanocoderTools. Removes thecheerioscraping dependency. -
Added
/setup-configcommand that lists all config files (project and globalagents.config.json,.mcp.json,nanocoder-preferences.json) with their paths and opens the selected one in your editor. -
Added configurable paste threshold for single-line paste handling, with tests for the configurable placeholder threshold. The threshold is a user preference in
nanocoder-preferences.json. Changed the default config file for paste settings fromagents.config.jsontonanocoder-preferences.json. Thanks to @grenkoca. -
Added live in-place task list display. Task progress now updates in place instead of appending repeated static lists to the conversation.
-
Improved tool output truncation across all tools. Every tool formatter now respects terminal width for cleaner output, including
execute_bash, file ops, git tools,search_file_contents, andweb_search. -
Redesigned the provider setup wizard with a unified model fetcher that auto-detects API compatibility (OpenAI-compatible, Ollama, Anthropic, Google) and fetches available models from the provider's endpoint. Simplified the provider step UI and added MiniMax and Kimi provider templates.
-
Fix:
alwaysAllowconfig not being respected forexecute_bash. Three interconnected bugs prevented it from working: top-levelalwaysAllowwas never loaded fromagents.config.json,isNanocoderToolAlwaysAllowedonly checkednanocoderTools.alwaysAllownot the top-level list, andnonInteractiveAlwaysAllowsetneedsApprovalon AI SDK tools but the conversation loop evaluated it from the original registry entries. Closes #431. -
Fix:
dimColormaking text inaccessible to reading on some screens. Closes #440. -
Fix: Tasks now clear when running
/clearcommand. -
Fix: Prevent edit flow from resolving MiniMax/Kimi to Anthropic template.
-
Fix: Set correct default model for MiniMax provider.
-
Fix:
/usageand context percentage showing stale system prompt length. AddedsetLastBuiltPromptand fixeduseContextPercentageoverwriting cache. -
Added debug logging to 15 silent catch blocks in git utilities that were swallowing errors invisibly. Operational catches now log at debug level for easier diagnosis while boolean probes (e.g.
isGitAvailable,branchExists) remain intentionally silent. Thanks to @ragini-pandey. Closes #452. -
Security: Address semgrep security finding in console.error. Thanks to @BRIJESHKR.
-
Security: Fixed vulnerable packages. Thanks to @BRIJESHKR.
-
Security: Replaced
exec()withexecFile()in VS Code extension installer to prevent command injection. Removes shell interpretation from CLI discovery and extension status checks. Thanks to @ragini-pandey. -
Added
/creditscommand showing project contributors (auto-generated from git history viapnpm run build:credits) and dependency versions. -
Added desktop notifications for tool confirmations, question prompts, and generation completions. Supports macOS (
terminal-notifierwith osascript fallback), Linux (notify-send), and Windows (PowerShell). Configurable per-event innanocoder-preferences.jsonand in/settingswith custom messages and optional sound. Includes a "Notifications" settings menu for preference management. -
Added CLI quality metrics framework (
benchmarks/measure.ts,benchmarks/report.ts) tracking correctness, performance (module count, boot time, bundle size), stability (tool/command counts, help text hash), and health (test counts, vulnerabilities). -
Reduced startup time by parallelizing and deferring non-critical initialization. LLM client and subagent init run in parallel on the critical path; update checks, MCP servers, and LSP servers now initialize in the background without blocking chat. Replaced the full Status box with a lightweight one-line
BootSummarycomponent. -
Fix: Scheduler mode memory leak — chat messages and components now clear before each scheduled job execution, preventing memory accumulation across repeated runs.
-
Fix: Updated agent documentation (
AGENTS.md,CLAUDE.md) with current project structure (766 files across 97 directories), added missing directory mappings, removed deprecated references, and documented the lazy-loading command system. -
Fix: Improved Ollama timeout handling for slow local models. Timeout errors are now detected case-insensitively, and IPv6 loopback addresses are correctly resolved. Thanks to @ragini-pandey.
-
Dependency updates
If there are any problems, feedback or thoughts please drop an issue or message us through Discord! Thank you for using Nanocoder.
Installation
npm install -g @nanocollective/nanocoderUsage
nanocoderFull Changelog: v1.24.1...v1.25.0