chore: version packages - #983
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
github-actions
Bot
requested review from
Avtrkrb,
akramcodez and
will-lamerton
as code owners
August 27, 2026 10:16
github-actions
Bot
force-pushed
the
changeset-release/main
branch
27 times, most recently
from
August 30, 2026 13:55
4344867 to
e78683d
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
25 times, most recently
from
August 31, 2026 17:35
1d5b962 to
48943d3
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
August 31, 2026 17:38
48943d3 to
442eba5
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
/usageand 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": falseon the provider config. Closes [Feature] Prompt / Context Caching #888.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..nanocoderignoreFile Support #755.nanocoder.retriessection inagents.config.jsonexposes the previously hardcoded caps:maxRepeatedToolCalls(default 3),maxEmptyTurns(default 2), andmaxMalformedRetries(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--plainruntime used bynanocoder runin 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--plainin 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 tomaxEmptyTurns/maxMalformedRetriesbefore stopping, so a silent or malformed-output model costs up to 3 model calls instead of 1. Set either limit to0to 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 applymaxRepeatedToolCallstoo 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_callsrather than dropped from it. Without this the pairedUnknown tool: Xresult 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.nanocoder init --preset <type>and/init --preset <type>. Presets seed analyzedAGENTS.mdguidance, stack-specific context ignores, and a/checkcommand skill while preserving existing files. Closes [Feature] Bundled Preset Configs (nanocoder init --preset) #1008.--plain, ACP, and subagent loops, not just the TUI. Subagents also honoursessions.maxMessages. Thanks to @Dhirenderchoudhary. Closes [Feature] Auto-compact on headless, ACP, and subagent loops #1048./tipcommand 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.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.bellnow 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 ananocoder.notificationsnamespace — it is read from the top-levelnotificationskey, so anything written at the documented path was silently ignored. Closes [Feature] Terminal Bell on Task Completion #931.professionalTonepreference (/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./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..nanocoder/tasks.jsonfile 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.jsonis ignored and can be deleted.ripgrepinstead of a hand-rolled JS walker.Search also respects
.nanocoderignoreand binary files again, matchinglist_directoryand file autocomplete.A failed search now reports the failure instead of returning an empty result set.
.nanocoderignoredirectories 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
/settingsunder Advanced, backed by thesemanticMemoryEnabledpreference. 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.jsonin your project, so/clearstarts 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--plainruns 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 declaredtools: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
syntaxThemepreference when you want code to keep a palette of its own. All five highlighting call sites - markdown code blocks,string_replacediff context, thewrite_filepreview, and the file explorer preview - passedtheme: 'default', a string wherecli-highlightexpects 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 takeprimary, built-ins and declarationstool, stringssuccess, numberswarning, commentssecondary, attributes and variablesinfo, and everything else the theme's bodytext. Code followsselectedThemeby default; settingsyntaxThemeinnanocoder-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 toselectedThemerather than dropping the styling. Closes [Feature] Syntax Highlighting Theme Customization #935.Fixed
ask_userrejecting 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 markedcompletedas soon as it is approved rather than when it runs, because the sub-agent layer does not report results back, so a client seescompletedfor a tool that may still fail. Note also that sub-agent approvals ignore the ACP session's mode and the configuredalwaysAllowlist, so ayoloorauto-acceptsession 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
llmContentso the complete output is preserved for the model instead of being passed asundefined. Closes [Bug] Subagents crash when a custom tool returns an object without llmContent #1033.Custom tool
cwdnow stays inside the project after symlink and${VAR}resolution. Acwdthat really resolves outside the project - an absolute path,${HOME}, a../traversal, or an in-repo symlink pointing out - now fails the tool call withCustom tool cwd escapes the project directoryrather than running the script somewhere unexpected. A missingcwdstill 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 /cinstead of-c, which cmd does not accept./dskips AutoRun;/smakes 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 logsreturning 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 logsreading 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-maxand/context-maxsilently accepting malformed values.10kgused to parse as10and128kbas128, 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 optionalk/Ksuffix is rejected with the existing error message. Values large enough to overflow toInfinityare 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 realusermessage — 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 thedisplayOnlycontract onMessage, warns when a display-only message carriestool_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 asassistantmessages, 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
displayTexthave 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
areLinesSimlartoareLinesSimilar. Thanks to @hafzism. Closes [Bug] Typo in exported public API areLinesSimlar #968.Fixed
string_replaceanddiff_editcorrupting edits whose replacement text contains$. Both tools passed the model's replacement straight toString.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.jsonis missing, unreadable, or malformed. Both module-load reads of the version (cli.tsxand 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 tounknown, shared by the banner,/help, and/doctor(which previously reported a misleading0.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@filementions 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
@themeblock in the CSS.Fix auto-compact silently no-opping in the TUI after the shared-helper refactor.
maybeAutoCompactderived the provider and model from the client and swallowed any failure, so the chat loop's owncurrentProvider/currentModelwere 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.changedskill subscriptions silently never firing on Windows. Chokidar reports changed files using the platform separator, so a documented pattern likedocs/**was asked to matchdocs\guide.mdand never could — the daemon started, reported healthy, logged nothing, and did nothing. The same mismatch let a root-scoped pattern such as*.mdmatch the nestedsub\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 ofprocess.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_pathlimit (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/tmpifTMPDIRis itself too long), anddaemon startreports 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. TheunregisterMany()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 theapprovalandread_onlymetadata that plan and headless filtering read, skill and bundle tools registered throughregisterSkillTool(), and the constructor's removal ofweb_searchwhen no Brave Search key is configured, which came back as an unusable tool. The only caller today is the shutdown handler registered ininitializeMCP, 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 thetriggeredRunCompleteevent. 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 notriggeredRunCompletekey, 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 ananocoder.pastenamespace when it is read from the top-levelpastekey (the same error just fixed fornotifications), documented thetriggeredRunCompleteevent in both preference tables, and noted that the terminal bell needs the master Notifications toggle on and that tmux swallows the bell unlessmonitor-bellis 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.buildSystemPromptalso takesprofessionalToneas an explicit argument instead of reading the preference file itself.Professional Tone now uses a shortened TONE section under the
nanotool 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
/repomapindexing 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 exactlymaxFilesindexable files is no longer reported as truncated./repomapnow shows a "Building repo map" spinner while it scans, and reuses the sharedcalculateTokenshelper 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 proposecandidates.Added a visual
savingindicator 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/clearand/copycommands, 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.