Nanocoder v1.29.0: native VS Code GUI, subagent attach, prompt scrubbing #81
will-lamerton
announced in
Annoucements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Nanocoder v1.29.0 is out. The headline is a native VS Code GUI powered by the Agent Client Protocol: the extension now spawns and drives
nanocoder --acpitself, so there is nothing to run in a terminal. Alongside that: you can pressCtrl+Sto attach to a running subagent session and watch what it is doing in real time, a newPrivacyContextscrubs sensitive content out of prompts before they leave your machine, and each development mode can now have its own provider and model.Built by the Nano Collective, a community collective building AI tooling not for profit, but for the community.
Full changelog and docs at https://github.com/Nano-Collective/nanocoder.
Native VS Code GUI
The biggest change in this release is that the VS Code extension now ships a full sidebar chat, not a companion window. The extension spawns and manages
nanocoder --acpitself, so the only thing in the terminal is whatever you were already doing. Responses stream into a sidebar webview with collapsible thinking sections, tool activity renders as live cards, and file edits open in VS Code's diff viewer.Behind the scenes this is the Agent Client Protocol (ACP) plumbing added in v1.28.0, now with a real editor on top. Concretely:
/help,/clear, and any custom commands from.nanocoder/commands. CLI-only commands explain themselves rather than failing silently. Messages that start with file paths are not mistaken for commands.ask_userquestions render with one button per answer. Tool approvals show Approve/Deny inline instead of a terminal prompt.write_tasks) renders as a live checklist via ACPplanupdates, which also lights up in other ACP clients like Zed.nanocoder.cliPath, and surfaces the last stderr line in the crash dialog. A silent--acpstartup crash when the working directory was unwritable is fixed.Legacy WebSocket companion mode is now opt-in (
nanocoder.autoConnectdefaults to off), and the extension docs have been rewritten around the GUI.Thanks to @akramcodez and @Dhirenderchoudhary for the build.
Attach to a running subagent
Subagents have been useful but opaque: they run in their own context and you only saw the result when they finished. v1.29.0 lets you attach to a running subagent from the terminal UI and inspect exactly what it is doing, including streaming text and reasoning, in real time.
Ctrl+Swhile a subagent is running to attach to it.Ctrl+Scycles through them.Escto detach and return to the parent.Under the hood this needed two fixes that were easy to miss. The attached-session transcript renders through Ink's append-only
<Static>, so switching agents never printed the new agent's messages; the view is now remounted per agent with a terminal wipe (the same treatment/clearuses), and rapidCtrl+Spresses cycle reliably. Thanks to @llupRisinglll.Privacy-aware prompt scrubbing
A new
PrivacyContextscrubs sensitive content from prompts before they leave your machine. Tool arguments are rehydrated locally after the response comes back, so the model still sees the values it needs while the cloud provider only ever sees placeholders. There is also:/privacycommand to inspect what is being scrubbed in the current session, with the active rule pack and a sample of recent scrub events.Thanks to @akramcodez.
Mode-specific provider and model configuration
You can now bind a different provider and model to each development mode (normal, auto-accept, yolo, plan), so the cheap local model you use for chat is not the one you accidentally burn through with
--mode yoloon a long refactor. The configuration lives inagents.config.jsonunder a per-mode block and re-resolves live when you switch modes.Closes #277. Thanks to @akramcodez.
Interactive questions in plan mode
Plan mode used to plan around ambiguity by guessing. v1.29.0 lets the agent ask structured questions via
ask_userwhile it is planning, with one button per answer, so it can resolve open questions instead of inventing answers. The questions render inline in the GUI and as a normalask_userprompt in the terminal UI. Closes #96. Thanks to @akramcodez.TUI refinements
A grab bag of quality-of-life fixes to the terminal UI:
--alt-screen(fullscreen with in-app scrolling) and the inline default both render correctly./clearis more reliable and exits cleanly. Thanks to @llupRisinglll./modelpicker, with a capped, centered scrolling window so large model catalogs no longer overflow the terminal. The current model is preselected. Closes #683. Thanks to @rakshith1928./settingsdialog with searchable categories, so settings are easier to scan and filter from the TUI. Closes #471. Thanks to @llupRisinglll.--alt-screenmode. The chat transcript and the input/tools footer now share the same left column, so assistant messages, tool results, and the input line up cleanly. The fix moves the footer out to the transcript's padded column rather than pushing the transcript into the scroll viewport's clip window (which was clipping the first character of each line).ask_usercleanup. Emoji badges removed from the question type, and the tool result now always renders the full Question/Answer block even in compact tool display mode, instead of folding into the tool tally and hiding what was answered./. The completion menu now appears as soon as you type/, and Tab selects the highlighted suggestion. Previously the menu was Tab-triggered and often failed to render, especially in alternate-screen mode. Recalling a/commandfrom history with the arrow keys no longer opens the menu, so up/down keep navigating history freely; the menu returns as soon as you type.[Image #N]placeholder in the message. Dragged or typed image paths are no longer silently stripped; each becomes a numbered[Image #N]placeholder (mirroring the[Paste #N]convention), numbered after any images already attached via Ctrl+V, and highlighted in the chat history like[@file]mentions.Session resume, CLI flags
--continue(-c) resumes the most recent session for the current directory.--resume [id](-r) resumes a session by id, list index, orlast, with a bare--resumeopening the session picker at startup. Thanks to @llupRisinglll.New commands and flags
/doctorchecks your setup and reports common configuration problems (missing binaries, broken config files, stale model caches). Closes #609. Thanks to @Dhirenderchoudhary./retryre-runs the last user turn without retyping the prompt. Closes #608. Thanks to @Dhirenderchoudhary.--jsonoutput flag for the non-interactive plain run path, for piping Nanocoder into other tools. Thanks to @OMEE-Y.diff_edittool for nano-profile models, so very small local models that struggle withstring_replacehave a more forgiving edit primitive. Closes #604. Thanks to @Dhirenderchoudhary.Under the hood
cdin bash persists across commands, so relative reads and edits work after moving into a subdirectory or worktree. File tools also accept absolute paths that point inside the project, and can still reach the project root or a sibling worktree aftercd-ing into a subdirectory./usage, with a per-provider cost breakdown and a cumulative per-call cost history. Closes #602. Thanks to @rakshith1928.read_filevia get-md, so those documents can be read directly into the conversation. Thanks to @akramcodez.Providers
/setup-providerswizard includes Thesean's Ship endpoint with Anthropic-compatible Claude models (ship-like/claude-opus-4-8,ship-like/claude-sonnet-5,ship-like/claude-haiku-4-5), plus a new docs page covering configuration and available models.Fixes
nanocoder.tuneloading and configuration precedence fromagents.config.jsonnow resolve correctly. Closes #648. Thanks to @rakshith1928.NODE_ENV, and noisy LSP discovery logs are quieted. Closes #606. Thanks to @A-S-Manoj.strip-ansiruntime dependency. Closes #643. Thanks to @2409324124.Documentation
Dependency updates
@ai-sdk/google,@ai-sdk/openai-compatible,undici,diff, andknip.The VS Code extension saw major work this cycle (ACP process manager and handshake, a chat sidebar webview with tool-permission and diff UI, session persistence, and Tailwind styling). It is versioned separately from the CLI. Thanks to @akramcodez and @Dhirenderchoudhary.
If anything is broken or surprising, please open an issue or drop a note in Discord. Thank you for using Nanocoder.
All reactions