Skip to content

chore: version packages - #983

Open
github-actions[bot] wants to merge 1 commit into
mainfrom
changeset-release/main
Open

chore: version packages#983
github-actions[bot] wants to merge 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actions github-actions Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or setup this action to publish automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@nanocollective/nanocoder@1.31.0

  • Added Anthropic prompt caching. The system prompt, tool schemas, and conversation history are now marked with cache breakpoints, so multi-turn sessions read the stable prefix back out of cache instead of paying full price for it every turn. Cost reporting is cache-aware throughout: /usage and the per-response indicator price cache reads and writes at their own rates instead of billing every cache hit at the full input rate, and the per-response indicator surfaces the cached token count alongside the total. Opt out with "promptCaching": false on the provider config. Closes [Feature] Prompt / Context Caching #888.
  • Fix multi-line paste submitting the prompt partway through, and add a selection mode for fullscreen.

Nanocoder never enabled bracketed paste, so the terminal delivered a paste as bare bytes and the carriage return at each line break reached Ink's keypress parser as Enter. Pasting two lines sent the first line to the model and left the second in the input box. Paste handling relied entirely on heuristics (input rate, size, line count) that only ever saw text which had already made it into the buffer.

DECSET 2004 is now enabled in both screen modes. Paste payloads are lifted off stdin before Ink sees them and delivered to the input as a single event, so a pasted newline can no longer submit. The old heuristics remain as a fallback for terminals without bracketed paste support.

Fullscreen mode (--alt-screen) enables mouse reporting for wheel scrolling, which takes click-drag text selection away from the terminal. Ctrl+P now toggles selection mode, suspending mouse reporting so you can select and copy normally, and resuming it on the next press. Inline mode, the default, never enables mouse reporting and is unaffected.

  • Grouped each VS Code chat turn's thoughts, tool calls, edit cards, and task plan into one ordered, collapsible work summary while leaving the final answer visible. The summary reports completed, stopped, or failed duration and reopens for pending approvals. Thanks to @Gambit-Checkmate. Closes [Feature] Group agent thoughts and tool calls into a single work summary #858.
  • Added support for a .nanocoderignore file. Patterns in it keep tracked-but-noisy files (lockfiles, generated fixtures) out of directory listings, file search and the file explorer, so they stop eating context even though .gitignore doesn't cover them. It is a context-hygiene tool rather than a secrets boundary: read_file and execute_bash don't consult it, and checkpoints deliberately skip it so hidden files are still snapshotted and restored. Thanks to @A-S-Manoj. Closes [Feature] Custom .nanocoderignore File Support #755.
  • Add configurable agent-loop retry limits to prevent token drain ([Feature] Configurable Retry Limits to Prevent Token Drain #897). A new nanocoder.retries section in agents.config.json exposes the previously hardcoded caps: maxRepeatedToolCalls (default 3), maxEmptyTurns (default 2), and maxMalformedRetries (default 2). When the repeated-tool-call limit is hit in an interactive session, Nanocoder now pauses and asks whether to continue (granting another window of attempts) or stop, instead of always hard-stopping; non-interactive runs keep the hard stop. The same limits now also protect the --plain runtime used by nanocoder run in CI and non-TTY environments, which previously had no repeated-call cap at all: each cap hard-stops with a clear error there. Note this also loosens --plain in two places: it used to return an error on the first empty response and on the first malformed tool call, and it now nudges or asks the model to self-correct up to maxEmptyTurns / maxMalformedRetries before stopping, so a silent or malformed-output model costs up to 3 model calls instead of 1. Set either limit to 0 to restore the old fail-fast behaviour. Calls to unknown tools count toward the repeated-call streak in both runtimes, so a model stuck on a nonexistent tool trips the same cap instead of looping until the turn ceiling. Delegated subagent runs, whose loop previously had no cap at all, now apply maxRepeatedToolCalls too and stop with an error naming the setting.

One change reaches further than the retry limits themselves: a tool call naming a tool that does not exist is now kept in the assistant message's tool_calls rather than dropped from it. Without this the paired Unknown tool: X result was orphaned and pruned before the request went out, so the self-correction hint never reached the model and it re-emitted the same nonexistent call. This applies to all three runtimes that partition tool calls, including the ACP loop (--acp, used by editor clients), which is otherwise unaffected by the retry limits. The practical consequence is that providers now receive a tool call naming a tool that was not in the request's tool list.

Exports are now contained to the project directory, matching read_file / write_file / string_replace: ~ is not expanded and absolute paths outside the project root are refused rather than written. Rejections name the specific cause (null byte, ~, .. segment, outside the root) instead of failing generically.

  • Added bundled React, Next.js, and Rust project presets for nanocoder init --preset <type> and /init --preset <type>. Presets seed analyzed AGENTS.md guidance, stack-specific context ignores, and a /check command skill while preserving existing files. Closes [Feature] Bundled Preset Configs (nanocoder init --preset) #1008.
  • toggle todo-list visibility using ctrl-t
  • Auto-compact now runs on --plain, ACP, and subagent loops, not just the TUI. Subagents also honour sessions.maxMessages. Thanks to @Dhirenderchoudhary. Closes [Feature] Auto-compact on headless, ACP, and subagent loops #1048.
  • Added discoverable usage tips to the welcome screen and a /tip command for showing another tip on demand. /tip <text> narrows the pick to tips mentioning that text, and consecutive runs will not repeat the tip they just showed. Thanks to @OllieinCanada. Closes [Feature] Tip of the Day (/tip) #929.
  • Added a terminal bell option to notifications. Every notifier Nanocoder had was desktop-only — terminal-notifier, osascript, notify-send, the PowerShell balloon — so anyone driving Nanocoder over SSH, inside tmux, or from a remote container got nothing at all when a long run finished. notifications.bell now also writes a BEL character to stdout for whichever events you have enabled, which the terminal in front of you renders as a beep or a visual flash. Toggle it under /settings → Input → Notifications, next to Sound. BEL is non-printing, so it does not disturb the rendered frame, and it is skipped when stdout is not a TTY so piped output and daemon logs stay clean. Also corrected the notification docs, which described the preference as living under a nanocoder.notifications namespace — it is read from the top-level notifications key, so anything written at the documented path was silently ignored. Closes [Feature] Terminal Bell on Task Completion #931.
  • Added an action timeline in the VS Code sidebar so you can click a prior mutating tool step and revert the workspace files and conversation back to that point.
  • Added a professionalTone preference (/settings → Behavior → Professional Tone). When on, the end-of-turn note drops its random adjective ("Completed in 12s." instead of "Worked for a plucky 12s.") and the system prompt gains a TONE section instructing the model to stay terse and strictly functional — no filler, no preamble, no celebratory wrap-ups.
  • Added /repomap, a local codebase map. Nanocoder indexes the symbols defined in each source file, links files that reference each other's symbols into a directed graph, and ranks that graph with PageRank - so the map leads with the files the rest of the codebase leans on most. Everything runs on your machine with no LLM round-trip, covering TypeScript/JavaScript, Python, Go, Rust, Java/Kotlin/C#/Swift, Ruby, PHP, and C/C++. The map is budgeted to 1024 tokens by default; /repomap --tokens <n> widens it. Thanks to @akramcodez. Refs [Feature] Codebase Intelligence & Repo Map (/repomap) #890.
  • Retired the legacy .nanocoder/tasks.json file in the working directory. Task state is now session-scoped and stored with the session's other artifacts under the app data directory, so nanocoder no longer writes agent bookkeeping into your repository and two concurrent sessions no longer share one task list. Resuming a session restores its tasks. Any leftover .nanocoder/tasks.json is ignored and can be deleted.
  • File search (path matching and content search) is now backed by ripgrep instead of a hand-rolled JS walker.

Search also respects .nanocoderignore and binary files again, matching list_directory and file autocomplete.

A failed search now reports the failure instead of returning an empty result set.

.nanocoderignore directories are skipped during the walk rather than filtered afterwards, so a large ignored directory can no longer crowd real files out of the results.

  • Added a dedicated Semantic Memory toggle to /settings under Advanced, backed by the semanticMemoryEnabled preference. The setting defaults on to preserve existing behavior, and can be turned off to keep agents from persisting reusable context across sessions.

  • Added a session-scoped artifact lifecycle to the CLI and VS Code: implementation plans with explicit review and prose-plan fallback persistence, persistent task tracking, completion walkthroughs after an approved plan, clickable artifact shortcuts that survive session resume, and reliable cancellation recovery. Task lists now live with the session instead of .nanocoder/tasks.json in your project, so /clear starts a fresh list while the previous session keeps its record. Plan approval always works, falling back to the plan in the transcript when no artifact was written. Headless --plain runs keep their artifacts ephemeral and are not forced to produce a walkthrough. Subagents can no longer reach the plan, task, or walkthrough tools, and their declared tools: allow-list is now enforced when a tool runs rather than only when the tool set is offered. Thanks to @2409324124. Closes [Feature] AI Artifact System (Implementation Plans, Tasks, Walkthroughs) #805.

  • Syntax highlighting now follows your theme, and takes a syntaxTheme preference when you want code to keep a palette of its own. All five highlighting call sites - markdown code blocks, string_replace diff context, the write_file preview, and the file explorer preview - passed theme: 'default', a string where cli-highlight expects a token-to-formatter map, so the option was silently dropped and every theme rendered code identically in the library's own colours. Each one now derives its token map from a theme's palette: keywords take primary, built-ins and declarations tool, strings success, numbers warning, comments secondary, attributes and variables info, and everything else the theme's body text. Code follows selectedTheme by default; setting syntaxTheme in nanocoder-preferences.json (e.g. "syntaxTheme": "dracula") points code at any other theme's palette while the rest of the UI stays put, and an unknown name falls back to selectedTheme rather than dropping the styling. Closes [Feature] Syntax Highlighting Theme Customization #935.

  • Fixed ask_user rejecting 5-6 options over ACP. The tool schema allows 2-6 options, but the ACP path used by the VS Code extension capped them at 4, so an identical prompt succeeded in the CLI and failed in the editor. The bound now matches the schema, and the error string returned to the model says "2-6" rather than telling it the limit is 4 and pushing it to retry with a needlessly narrowed list. Closes [Bug] VS Code ACP ask_user rejects 5-6 options while CLI correctly accepts them #1036.

  • Fixed sub-agent tool calls being denied silently under ACP. A tool call made inside a dispatched sub-agent went through the global approval slot, which no ACP code path installed a handler for, so its safe fallback denied every one without the client seeing a session/request_permission. Delegated work could only write by bypassing approval entirely, which was invisible to a client that gates writes. Sub-agent calls now use the same permission channel as top-level ones, announced first so the request names a known tool call, prefixed so their cards cannot collide with a top-level id, and titled with the sub-agent so the client can tell them apart. The handler is scoped to the turn that installs it, so it no longer outlives that turn holding a finished session. Two known limits remain. The approval slot is still a process-wide singleton, so while two sessions have turns in flight at once the later one's handler answers the earlier one's approvals, against the wrong session id and abort controller; closing that needs the slot keyed by session or an approval channel threaded through the sub-agent executor. And an approved sub-agent call is marked completed as soon as it is approved rather than when it runs, because the sub-agent layer does not report results back, so a client sees completed for a tool that may still fail. Note also that sub-agent approvals ignore the ACP session's mode and the configured alwaysAllow list, so a yolo or auto-accept session is prompted inside a sub-agent for a tool it would not be prompted for at top level. Closes [Bug] ACP: sub-agent tool calls needing approval are denied silently, never reach session/request_permission #1019.

  • Preserve every copy of repeated pasted text through placeholder display, chunked updates, and prompt assembly.

  • Grouped the VS Code chat composer controls: model stays on the input row, the current approval mode stays visible on the gear, and provider plus mode pickers live in a Configuration popover. Closes [Feature] Explore a cleaner layout for chat input controls #859.

  • Fixed subagent tool results that return structured data without llmContent so the complete output is preserved for the model instead of being passed as undefined. Closes [Bug] Subagents crash when a custom tool returns an object without llmContent #1033.

  • Custom tool cwd now stays inside the project after symlink and ${VAR} resolution. A cwd that really resolves outside the project - an absolute path, ${HOME}, a ../ traversal, or an in-repo symlink pointing out - now fails the tool call with Custom tool cwd escapes the project directory rather than running the script somewhere unexpected. A missing cwd still falls back to the project root. Closes [Bug] Custom tool cwd follows symlinks / absolute paths out of the project #1027.

  • Custom tools on Windows now spawn cmd.exe /d /s /c instead of -c, which cmd does not accept. /d skips AutoRun; /s makes quote stripping deterministic. {{ }} substitution stays POSIX-quoted and is not shell-safe under cmd. Closes [Bug] Windows: custom tools spawn cmd.exe with -c; execute_bash already uses /c #1028.

  • Fixed nanocoder daemon logs returning only a sliver of the tail when a single oversized log line runs past the start of the 64KB window. Realigning the window to the first line break discarded everything before it, so a log holding one long serialized payload came back as just the few bytes that followed. The tail now only realigns when a line break is near the start of the window, and otherwise keeps the partial first line.

  • Fixed nanocoder daemon logs reading the whole log file into memory to return its last 64KB, so a long-running daemon with a large log made the command allocate the entire file and stall. The tail is now streamed from a byte offset, which also corrects a byte offset applied to a decoded string: any multi-byte content in the log shifted the window and returned far less than the intended 64KB. Closes [Bug] nanocoder logs buffers the entire log file into memory #1042.

  • Document the tool output convention for file content and add a regression test.

  • Consolidated the atomic-deletion overlap checks onto a single half-open [start, end) range helper, so the boundary tests that had drifted between < and <= now agree by construction rather than by coincidence. Deletion behaviour is unchanged - the longhand forms were already equivalent for every reachable input. Placeholder lookup at a cursor position does change: a position now counts as on a placeholder when it falls in (start, end], so the position immediately before a placeholder reads as outside it and the position immediately after it reads as inside, matching where the cursor actually sits when you press Backspace. Thanks to @hiarun02. Closes [Bug] Atomic-deletion boundary off-by-one #977.

  • Fix Expand Tool Results label inverted and compactToolDisplay preference never read at startup

  • Fixed --context-max and /context-max silently accepting malformed values. 10kg used to parse as 10 and 128kb as 128, so a typo quietly set a context limit nothing like the one you asked for. The value is now validated as a whole, and anything that is not a positive number with an optional k/K suffix is rejected with the existing error message. Values large enough to overflow to Infinity are rejected too, rather than being stored as a session limit. Thanks to @hiarun02. Closes [Bug] parseContextLimit silently drops trailing junk #973.

  • Closed the remaining routes by which nanocoder's own UI text reached the model. The ACP timeline-revert notice ("Reverted to before step N…") was still pushed into history as a plain assistant message, and /compact (plus auto-compact) fed display-only notices into the LLM summariser, whose summary re-enters context as a real user message — so a compacted session could still be told it had errored. Notices are now excluded from the summarised segment, and context-usage estimates and the auto-compact threshold count only what the provider actually receives. Also documents the displayOnly contract on Message, warns when a display-only message carries tool_calls (which would silently drop its tool results from the payload), and shares the "Tool approval required for: " prefix as a constant so the non-interactive exit-code path can't break on a reword.

  • Stopped nanocoder's own UI text from being sent to the model as its past output. Cancellation notices (_Cancelled by user._), inline error banners (**Error:** ...), the non-interactive "Tool approval required" notice, and the VS Code replies to built-in slash commands (/help, /copy, /model, unrecognized commands) were all pushed into conversation history as assistant messages, so on the next turn the provider received harness-authored markdown as if the model had written it — teaching it to imitate the chrome and, on a resumed session, to believe it had errored. These are now marked display-only: they still render in the chat and replay with session history, but they are filtered out before messages are converted to the provider payload. Closes [Bug] OpenAI Shim Injects Synthetic Protocol Text #893.

  • Fixed message compression so resolution text only marks an error resolved when it appears after that error.

  • Fixed a paste restored from an older session's prompt history being sent to the model as its own label. Placeholder lookup now matches on each entry's display text, but entries persisted before placeholders carried a displayText have none, so they were skipped and their [Paste #N: X chars] label survived into the prompt instead of expanding to the pasted content. Those entries now have their label rebuilt from the ordinal in their key and the content they hold, matching the legacy fallback that the display-text lookup replaced.

  • Fix the exported inline-diff similarity helper name from areLinesSimlar to areLinesSimilar. Thanks to @hafzism. Closes [Bug] Typo in exported public API areLinesSimlar #968.

  • Fixed string_replace and diff_edit corrupting edits whose replacement text contains $. Both tools passed the model's replacement straight to String.prototype.replace, which treats that argument as a substitution template rather than a literal: $$ collapsed to a single $, $& expanded to the matched text, and $` /$' spliced a whole half of the file into the middle of the edit. Those are ordinary characters in shell scripts, Makefiles, CI YAML and anything that builds a regex, so the bytes on disk silently diverged from the diff the user approved. Replacements are now spliced by index, so the approved preview - in the terminal and over ACP - is what lands. Closes [Bug] Replacement strings containing $ corrupt every string_replace and diff_edit #1057.

  • Include the provider in the message token cache key. The tokenizer is chosen from provider and model together, so two providers serving the same model name were sharing cache entries and could report counts produced by the other provider's tokenizer.

  • Fix a startup crash when package.json is missing, unreadable, or malformed. Both module-load reads of the version (cli.tsx and the welcome banner) threw before any error handling existed, taking down the CLI on a misbuilt install. Version lookup now lives in a single helper that falls back to unknown, shared by the banner, /help, and /doctor (which previously reported a misleading 0.0.0).

  • Fixed paste detection extracting the wrong text from the input buffer. It assumed every insertion was appended at the end, so pasting with the cursor anywhere but the end stored a truncated placeholder, and deletions or unchanged input reported a slice from the middle of the string. Detection now diffs the buffer against its previous revision and ignores non-positive deltas. Closes [Bug] paste-detection returns wrong addedText on deletions #979.

  • Fixed paste placeholders silently overwriting each other. Placeholder ids were derived from the number of live entries, so deleting one freed its id for reuse and the next paste clobbered a placeholder that was still in the input - destroying its content and leaving a duplicate label that got sent to the model as literal text. Ids are now namespaced by type (paste_1, file_1) and allocated from the highest id ever used, so a deletion can never free an id. Placeholder lookup now matches on each entry's own display text instead of a paste-shaped regex, which also makes @file mentions delete atomically rather than leaving an orphan entry behind, and lets two placeholders that render identically expand to their own content.

  • Fixed a regression where the VS Code extension webview rendered without theme colors after the Tailwind v4 upgrade by migrating custom color variables to an @theme block in the CSS.

  • Fix auto-compact silently no-opping in the TUI after the shared-helper refactor. maybeAutoCompact derived the provider and model from the client and swallowed any failure, so the chat loop's own currentProvider/currentModel were ignored; it now accepts them as explicit overrides. Auto-compact in --plain, ACP, and subagent loops also stops writing the message cap back into stored history when no compaction ran.

  • Fixed update command error detection when later output reports zero errors. Thanks to @anisayakmitra-in. Closes [Bug] update.tsx false-negative error detection #974.

  • Fix web_search TimeoutError not correctly captured as a timeout error

  • Fixed file.changed skill subscriptions silently never firing on Windows. Chokidar reports changed files using the platform separator, so a documented pattern like docs/** was asked to match docs\guide.md and never could — the daemon started, reported healthy, logged nothing, and did nothing. The same mismatch let a root-scoped pattern such as *.md match the nested sub\a.md, dispatching an unattended agent run against a file that was deliberately scoped out. Paths are now normalized to / at the watcher boundary, so the router, activity reports, and the payload handed to a triggered agent all read one path shape. Closes [Bug] Windows: event-router glob matching assumes "/" separators, so file.changed subscriptions silently miss files or fire out of scope #964.

  • Fixed models cache path on Windows by using os.homedir() instead of process.env.HOME, which is undefined on Windows. The cache now writes to the correct location instead of creating a literal ~ folder.

  • Fixed skill subscriptions never firing for a brace pattern such as *.{ts,tsx}. The event router's glob matcher escaped {, } and , as literals, so the pattern only matched a path that literally contained the braces. Braces now expand to an alternation, and an unbalanced brace stays literal rather than building a regex that would throw. Negation (!) is still unsupported. Closes [Bug] event-router.ts matchGlob doesn't handle brace expansion #1012.

  • Fixed a leaked pending slot in the daemon IPC client. If serializing or writing a request threw synchronously, the request's entry stayed in the pending map for the lifetime of the client, one per failed request. The slot is now released and the request rejected explicitly. Closes [Bug] DaemonIpcClient.request leaks memory and hangs if socket.write throws synchronously #1040.

  • Hardened the VS Code action timeline: it no longer snapshots its own before-images, skips a checkpoint rather than recording a wrong one when the workspace scan is truncated, leaves binary files alone, reverts a whole assistant turn at once, validates paths read back from the timeline index, and keeps the chat thread on screen when a revert is refused.

  • Fixed the daemon socket path on Unix when a deeply nested project pushes it past the sockaddr_un.sun_path limit (104 bytes on macOS, 108 on Linux). libuv silently truncates overlong paths rather than failing, so the daemon reported a socket it never bound, its stale-socket cleanup missed the real file, and two projects sharing a truncation prefix could collide on a single socket. Nanocoder now falls back to a stable hashed socket name under the system temp directory (or /tmp if TMPDIR is itself too long), and daemon start reports the path the daemon actually bound instead of recomputing it.

  • Fixed ToolManager.disconnectMCP() rebuilding the whole tool registry from the built-in exports and clearing the custom tool map. The unregisterMany() call above it already removes exactly the MCP tools, so the rebuild was redundant, and it discarded three other things with them: workspace custom tools along with the approval and read_only metadata that plan and headless filtering read, skill and bundle tools registered through registerSkillTool(), and the constructor's removal of web_search when no Brave Search key is configured, which came back as an unusable tool. The only caller today is the shutdown handler registered in initializeMCP, where discarding state is harmless, so nothing user-facing changes. The method is public and any other caller would have hit all four. Closes [Bug] disconnectMCP() permanently wipes all custom tools from the registry #1034.

  • Fixed the /settings → Notifications panel dropping the triggeredRunComplete event. The panel seeded its fallback config with only three events and rendered a row for each, then wrote the whole object back on every toggle - so flipping any switch persisted a preference with no triggeredRunComplete key, and the daemon's "triggered run completed" notification silently stopped firing. The event now has a default and a row of its own. Also corrected the paste docs, which described the threshold as living under a nanocoder.paste namespace when it is read from the top-level paste key (the same error just fixed for notifications), documented the triggeredRunComplete event in both preference tables, and noted that the terminal bell needs the master Notifications toggle on and that tmux swallows the bell unless monitor-bell is enabled.

  • follow-ups to the Ctrl-T task-list toggle: the status-bar badge now yields space under width pressure instead of squeezing the session name and editor pill, the unread marker only fires on real task changes, and the "todo" naming is aligned with the "Tasks" list it summarises

  • Update the message token cache in place instead of copying every entry into a new map on each cache miss.

  • Professional Tone now applies as soon as you toggle it in /settings. Previously the completion note changed immediately but the system prompt's TONE section waited for the next mode or model switch, so the model kept its old register and the toggle looked broken. buildSystemPrompt also takes professionalTone as an explicit argument instead of reading the preference file itself.

  • Professional Tone now uses a shortened TONE section under the nano tool profile, matching how every other prompt section is slimmed for tiny models. The full section cost ~695 characters on a prompt that is deliberately minimal; the nano variant is ~228.

  • Fixed {{args}} in custom commands without declared parameters so it receives the raw command arguments instead of an empty string. Closes [Bug] {{args}} template variable is silently empty in parameter-less custom commands #1035.

  • Fixed two /repomap indexing bugs and added a progress spinner. Python docstring bodies are no longer indexed as definitions (the """ and ''' branches were unreachable in the comment-stripping pattern, so names inside a docstring were reported as real symbols and sorted ahead of them), and a repo holding exactly maxFiles indexable files is no longer reported as truncated. /repomap now shows a "Building repo map" spinner while it scans, and reuses the shared calculateTokens helper for its budget maths.

  • Restored the VS Code panel features a bad merge in feat(vscode): group agent work into one summary #898 reverted: the action timeline and its undo, slash command autocomplete, editor-tab drag and drop, the MCP settings button opening .mcp.json, and the denied-edit status icon. The work summary from feat(vscode): group agent work into one summary #898 is kept, and no longer opens a second box that never settles when a tool reports back after Stop, nor a box for whitespace-only reasoning.

  • Wire semantic memory recall into subagent and daemon runs, serialize writes across manager instances and processes, and cap each repo memory file at 500 entries.

  • Rank recalled memories by how much of the query they cover, skip tool-call narration in reversal detection, and drop noisy /memory propose candidates.

  • Added a visual saving indicator in the CLI status line that briefly displays whenever session state is autosaved to disk. Thanks to @rishu685. Closes [Feature] Session Auto-Save Indicator #932.

  • Fix session selector dismissing on any keypress instead of only Escape when no sessions exist

  • Added slash command quick actions to the VS Code extension chat panel. Typing / in the input opens an autocomplete menu listing /test, /explain, and /doc, which insert a human-readable prompt template into the textarea so the user sees and can edit exactly what gets sent, alongside the existing /clear and /copy commands, which complete to their name and run as they always have. The menu only opens on a slash that starts a line, so URLs and paths are left alone.

If there are any problems, feedback or thoughts please drop an issue or message us through Discord! Thank you for using Nanocoder.

@github-actions
github-actions Bot force-pushed the changeset-release/main branch 27 times, most recently from 4344867 to e78683d Compare August 30, 2026 13:55
@github-actions
github-actions Bot force-pushed the changeset-release/main branch 25 times, most recently from 1d5b962 to 48943d3 Compare August 31, 2026 17:35
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 48943d3 to 442eba5 Compare August 31, 2026 17:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

0 participants