Repository navigation
Releases
v2.7.0
Added
- Plans can be saved locally as
.plan.mdfiles and reopened from the Project window or Finder;
the composer can attach a recent saved plan and prepare its configurable implementation prompt. - Provider CLI installations can now be configured once under Preferences > Sidekick >
Providers and reused by every Unity project. Claude adds a shared backend/environment editor
for inherited Claude login, OpenRouter, Amazon Bedrock, Microsoft Foundry, and custom endpoints. - Claude environment rows support backend-specific suggestions and sensitive storage. Sensitive
values use macOS Keychain or Windows CurrentUser DPAPI and are never serialized into Sidekick
settings; platforms without secure storage require an explicit plaintext choice.
Changed
-
The status bar now uses a single clickable MCP chip, adds a project-settings gear, and links each provider's project settings to its CLI/user-wide preferences.
-
Claude routing, endpoints, Foundry deployment mappings, environment variables, and CLI paths are
now user-wide preferences, while models, thinking, modes, MCP/tool policy, customization, and
additional arguments remain project settings. Existing project-scoped routing values are not
imported. -
The signed-out screen is now a scrollable Configure Claude Code editor with local readiness
validation, CLI-owned Use Claude Subscription / Use Anthropic Console account actions,
conditional Apply & Retry, and Switch Provider. Applying a backend refreshes the active
provider session without making a billable model request. -
Claude onboarding now uses the same full backend/environment editor: all routing backends,
secure variables, local readiness checks, and both Claude CLI login choices are available before
continuing setup. The wizard keeps navigation outside the editor scroll area and preserves a
draft when moving back while discarding it on skip, provider switch, or reopen. -
Claude backend/environment drafts now use a semantic baseline: Apply stays hidden until a
real change exists, concurrent edits surface a reloadable conflict, and secure values are
committed or rolled back atomically without entering project settings. -
CLI discovery now uses provider-owned, per-platform profiles and a shared Settings/onboarding
selector. Built-in installations are version-probed with bounded concurrency; remote config may
add only expiry-bounded, non-executable path suggestions that require an explicit selection and
strict capability check before Sidekick stores or runs them. -
Claude discovery now covers Homebrew and common Node manager locations without borrowing another
provider's NVM executable; the selector supports rescanning, custom paths, cancellation, and
offline cached/baked remote hints. -
Chat timeline scroll-to-latest now resolves dynamic-height history, shortcuts distant content
to one viewport, and reliably completes a bounded smooth animation at the newest bottom while
live output retargets the same motion. -
Claude provider launch policy is now configurable per project: inherit Claude CLI settings,
OpenRouter, Bedrock, Microsoft Foundry, or a custom Anthropic-compatible endpoint, with Foundry
deployment aliases, Bare/Safe presets, MCP/tool scope, and validated expert CLI arguments. Existing
launches keep their previous defaults and credentials remain owned by Claude CLI. -
CLI startup now resolves a provider-scoped immutable launch specification before entering Agent
Host. Claude, Codex, and Cursor keep their own discovery/probe rules; an explicitly configured
path is rejected at the validation boundary instead of being silently replaced by discovery,
and the daemon no longer reads globalSidekickSettingsduring runtime launch. -
Claude, Codex, and Cursor now share one provider-session lifecycle: opening or creating a chat
performs an explicit activation before the composer becomes available, configuration changes
report whether they applied live or require restart, and every provider can restart the same
conversation without silently forking it. Runtime state, normalized events, capabilities, and
MCP/recovery status now come from one immutable session snapshot while conversation history
remains a separate repository. -
Claude capabilities now come from the persistent session's native
initializehandshake. Model
and command catalogs share that response and cache; no second probe process is launched. -
The Asset Store installer now installs fresh copies and upgrades directly, but asks before
reinstalling the same version, replacing an unknown/custom version, or downgrading any managed
Lite/Pro package; downgrade prompts show the installed and target versions with a compatibility
warning, cancellation removes only the installer bootstrap, and successful installs are verified
at the exact requested version while externally managed UPM packages remain untouched.
Fixed
-
Opening Sidekick with Claude active no longer briefly flashes
Session activation was superseded. -
Model popovers now keep long catalogs inside a scrollable list, so model rows no longer extend
beyond the popup while reasoning and thinking controls remain available. -
Claude authentication status checks no longer block the Unity editor while resolving or probing
the CLI. The check now runs asynchronously once per provider scope, and sending a message no
longer performs a synchronous authentication preflight. Configuration and auth UI continuations
are marshaled back to the Editor main thread, including worker-thread provider signals. -
Claude CLI login now always starts from the Inherit backend and leaves browser, token issuance,
and credential storage to Claude CLI. Login applies and reloads only the configuration editor
that initiated the flow, and keeps that draft locked until cleanup or rollback has finished.
Interactive terminal launches receive the resolved environment snapshot without putting secrets
in arguments, scripts, logs, or fingerprints. -
Settings CLI selection now validates Browse-picked custom paths immediately, cancels stale
validations, and refreshes remote suggestions even when no built-in installation was found. -
Agent and session initialization now uses a blocking branded transition with the Ryx Sidekick
logo and title instead of briefly exposing Unity'sList is emptyplaceholder; composer input
and drag-and-drop are blocked until initialization completes. -
The transition logo now renders without mipmap, compression, texture-edge wrapping, or
transparent-edge artifacts while pulsing. -
History-load recovery actions now use compact adaptive primary/secondary buttons that remain
readable and untruncated in narrow Sidekick windows. -
Claude capability bootstrap now completes as soon as the initialize response arrives, uses one
persistent-session fetch for model and command catalogs, and does not treat session activation
without a real turn as an active turn for provider or conversation switching. -
Claude startup no longer waits on a fixed capabilities-probe timeout. Readiness waits for the
persistent process's initialize response and is released by caller cancellation or process exit. -
Agent Host startup failures now preserve a classified reason (
not_found,access_denied,
invalid_executable,invalid_working_directory, orspawn_failed) and the native error/path
diagnostics, producing one user-facing startup message instead of duplicate generic errors. -
Agent Host now resolves Unity's bundled .NET runtime from the Windows/Linux
<Editor>/Data/NetCoreRuntimelayout as well as the macOS scripting-resources layout, so Sidekick
starts without requiring a manual runtime override on Windows Unity 6. -
Synchronous CLI validation now executes
--versionwith concurrent stdout/stderr draining and
bounded process-tree cleanup, while provider launch snapshots preserve inherited environment,
platform PATH additions, and null-valued overrides for Claude, Codex, and Cursor. -
Invalid Claude backend drafts now return a safe validation failure instead of escaping as an
unhandled exception from Project Settings.
v2.6.2
Fixed
-
Rebuilding the Agent Host after unrelated repository commits no longer produces a different DLL
solely because the .NET SDK embedded the current Git revision, avoiding a false same-version
payload-change failure in Build Agent Host. -
Claude sign-in now runs through the installed Claude CLI (
claude auth login) and verifies
claude auth status; Sidekick no longer writes or interprets Claude OAuth tokens in Keychain or
.credentials.json, preventing a successful Sidekick-only login that the CLI still treated as
signed out. -
Agent Host startup, attach, shutdown and reload recovery no longer block the Unity main thread;
cancelled or stale startup generations cannot commit a turn or overtake quarantined output, and
duplicate sends are rejected before a second user message is appended. -
Agent Host token files on POSIX are now written through a restrictive atomic temp-file transaction:
mode 0600 is verified before the secret payload is written, and an atomic same-directory rename
replaces the old token without a world-readable write window; any failure prevents daemon launch. -
Persisted context-attachment envelopes now carry an explicit schema version; legacy and current
envelopes remain readable, unknown schema versions or malformed inner payloads are isolated per
attachment, and a bad attachment no longer aborts draft or conversation persistence. -
Proprietary asset notices and the current Lite architecture snapshot are now synchronized with
the release templates and the actual six-asmdef assembly layout. -
Windows headless launches now resolve canonical npm node-backed
.cmdshims directly to
node.exeplus their fixed script prefix, preserving caller arguments byte-for-byte and
failing closed for malformed/custom shims; the interactivecmd /kterminal path remains an
explicit residual. -
Claude stream output lines that are malformed JSON or lack a non-empty
typeare now retained only as raw diagnostics instead of appearing as assistant text. -
Account-token sign-out and successful macOS Keychain writes now scrub the legacy plaintext token from Claude's config while preserving foreign CLI keys; Windows secret-file ACLs grant the current user access even when a different owner is recorded.
-
CLI launches no longer warn about cmd.exe
%VAR%expansion for lone or ordinary%characters; the warning is reserved for percent-delimited patterns. -
The Sending report dialog's loading indicator now actually spins. Its ring only faded and scaled in place, which read as a stalled upload; the rotation is layered on top of that breathing pulse, which is unchanged.
-
Hardened CLI response streaming against a rare background-thread timing issue that could cause output to silently stop appearing mid-session, and removed an unused legacy code path that carried the same risk.
-
If the agent host daemon stops responding while connecting or starting a turn, Sidekick now fails that turn quickly instead of freezing the Editor — previously an unresponsive daemon could hang the Editor with no recovery but force-quit.
-
The generated MCP config — which can include server credentials such as HTTP headers or environment variables — now defaults to
Library/Sidekick.Mcp/instead of your project folder, keeping it out of version control by default; a copy left behind at the old location by a previous version is removed automatically. If you use authenticated MCP servers and previously committedSidekick/mcp-config.generated.json, treat those credentials as exposed and rotate them — removing the file now does not remove it from your repository's history. -
Hardened the shell fallback used to launch the CLI (and the generated macOS "log in" script) so that CLI paths, arguments, and working directories are always safely quoted — closing a shell-injection edge case and a crash ("Unfinished quote") that could previously occur if a path or argument ended in a backslash.
-
The sign-in callback is no longer logged with its full URL. The login authorization code and state used to be written to Sidekick's diagnostics log (and, for future problem reports, the captured session log) verbatim; only the request method, path, and which parameters were present are recorded now.
-
Your Sidekick license key and account session token are no longer stored inside the Claude CLI's own config file — they now live in a dedicated Sidekick-owned file, encrypted at rest on Windows (DPAPI) and owner-only on macOS/Linux. Existing keys migrate automatically the next time Sidekick reads them. Every credential file Sidekick writes (Claude's included) is now locked down to owner-only access before any content is written, closing a brief window where a new credential file was readable by other accounts.
-
Hardened provider switching against a rare race where a session already in flight could briefly consult another provider's settings instead of its own — most likely when switching providers quickly, closing a Sidekick window mid-session, or running multiple Sidekick windows side by side.
-
Editing a very large file (over 1 MB) no longer triggers a full synchronous read on the main thread just to compute a diff preview's starting line number; files over that size now show a generic diff header instead of momentarily hitching the Editor.
-
A restored Scene View screenshot chip with no recorded camera rotation no longer shows (and sends to the model) a false "unrotated" reading — the rotation line is now omitted instead of displaying a fabricated 0°,0°,0°.
-
Fixed an Editor hang: a Scene View screenshot chip left sitting in the composer could freeze the Editor (and grow memory without bound) whenever its draft was saved — reopening the window, switching CLI providers, or a script recompile. The chip's camera position/rotation metadata is now stored in a plain, bounded format.
-
Opening a conversation (or looking up its token usage) no longer reads the whole session transcript into memory at once. Claude CLI sessions can grow to tens or hundreds of megabytes with long tool output, and loading one used to momentarily spike memory by the size of the file on the Editor main thread; conversations are now read line-by-line instead, with identical results.
v2.6.1
Added
-
Screenshot sources are now extensible. Scene View and Game View captures moved behind a capture-source registry, and the composer's + menu and the
/screenshot-scene//screenshot-gamepalette commands are generated from it — so a newly registered source (including ones added by Sidekick Pro) shows up in the menu and the palette without any UI changes. Existing entries, labels and slash commands are unchanged. -
Docked Tasks panel above the composer. A collapsible card sits directly on top of the input box, tracking the agent's tasks live as it creates and updates them (TaskCreate/TaskUpdate) or revises its to-do list — a header with a completed/total counter and mini progress bar, expanding to one row per task with per-status styling (pending, in-progress with a spinner, completed, cancelled). Long lists scroll within the panel instead of crowding out the chat, keeping the running task in view, and the panel folds itself back to the header once everything is done. Task tool calls also render as a compact inline card in the chat, and when the panel is collapsed a brief toast announces tasks starting and completing.
-
Report a problem. A new "Report a problem" action — available from Project Settings ▸ Sidekick and the command palette (Report a Problem…) — opens a modal where you can describe an issue, attach screenshots or text/log files, and optionally include the current session's captured logs (on by default, with an inline preview of the exact text sent). Submissions get a Report ID you can reference in follow-up.
-
Automatic error report prompt. When Sidekick's own code logs an unexpected error — a thrown exception, a failed CLI/agent-host process, or a relayed CLI error — a dismissible banner now appears inline in the chat offering to report it, pre-filled with a short error summary and session logs included by default, so you don't have to go looking for Project Settings or the command palette. It shows one banner at a time; dismiss it and the next error shows a fresh one.
-
Internal diagnostics log. Sidekick now writes its own diagnostics to a size-rotated log file at
Library/Sidekick.Logs/sidekick.log, kept separate from your project and editor logs, with an Open Logs Folder button in Project Settings ▸ Sidekick. This lays the groundwork for one-click problem reporting. -
"Log Prompt/Response Content" setting (off by default). A new toggle in Project Settings ▸ Sidekick opts in to capturing raw prompt/response content — what you send to the CLI and what it streams back — under a dedicated
PromptIOlog category. Left off, that content never touches the diagnostics log.
Changed
- Verbose Logging now also controls Sidekick's Unity Console output. Warnings and errors always show; info and verbose diagnostics appear in the Console only when Verbose Logging is enabled — the internal log file captures everything regardless.
- Raw prompt/response content is no longer logged by default. It is now gated behind the new Log Prompt/Response Content setting (off by default) rather than Verbose Logging, so enabling Verbose Logging alone no longer writes prompt/response text to disk.
- All sub-agent chat drill-ins are now a Sidekick Pro feature. Opening an agent's chat (tray chip or the ↗ button on a Task card), expanding a lane's activity/transcript section, and loading sub-agent transcripts now require Sidekick Pro — the drill-in views and the transcript reader live in the Pro package and register through a capability seam, replacing the 2.6.0 rule that only live agent chats were gated while finished transcripts stayed viewable. On Lite, tray chips show a lock and every drill-in opens the Pro paywall; sub-agent event attribution (agent activity never floods the main chat), the Active Agents tray, and Task cards with live status badges and final summaries remain included.
Fixed
- A Pro paywall opened for a relocated feature (such as sub-agent chats) that an older, already-installed Pro package doesn't provide now shows an Update Pro dialog — a one-click in-place upgrade — instead of the full-price Buy dialog. The paywall reads live feature availability, so this also covers in-chat MCP management when a stale Pro package is present.
- Public package documentation is now separated from private plans and runbooks. Git/UPM installs retain the bundled HTML guide and Lite contributor architecture, Asset Store installs fall back to the hosted guide when
Documentation~is unavailable, and the OSS publisher excludes internal docs plus local IDE/build artifacts.
v2.5.0
Added
- New Open in Terminal command (type
/in the composer) that opens a real OS terminal at your project root and launches the active CLI — Claude, Codex, or Cursor — as a fresh interactive session, for when you want the full terminal experience alongside the in-editor chat. - Two new Claude permission modes — Accept edits (auto-accepts file edits but still asks before running commands) and Auto (a model classifier decides which actions to allow, erring toward asking) — alongside the existing Ask before edits and Edit automatically. The status-bar permission control is now a menu you pick from instead of a button that cycles one click at a time, and every mode is available in Plan mode too.
Changed
- Redesigned how Terminal / Bash tool calls appear in chat. Each call is now a compact one-line card — a terminal glyph, the command's description, an output line-count, and a chevron — that's collapsed by default and expands on click. Expanding shows the command with its boilerplate prefix (e.g.
$(command -v git) -C /path) dimmed so the real action stands out, the full output in a scrollable block, and Copy command / Copy output buttons. A running command shows an animated spinner and a failed one turns its card red. Stacked terminal calls (a typical push-and-open-PR flow) now read as a few tidy lines instead of a wall of text. - Redesigned how MCP tool calls (from connected MCP servers) appear in chat. Each call is now a compact one-line card carrying a purple MCP badge, collapsed by default. When the call's arguments include a human-readable title (e.g. a
titleordescriptionfield) the header leads with that and tucks the technicalserver.toolname inside; otherwise it showsserver.toolin monospace. Expanding reveals the call's Input (the arguments, shown first) and Output as separate foldable sections with syntax-coloured JSON, so it's easy to scan what was sent and returned. A running call shows an animated spinner and a failed one turns its card red with the error highlighted. - The collaboration mode formerly labelled Default mode is now Act mode, making its role clearer as the counterpart to Plan mode.
- Claude now runs as a single persistent session that stays alive between messages, so changing the permission mode (or model) takes effect mid-conversation without interrupting the assistant or restarting the CLI — switching how edits are approved no longer cancels the current turn. Your chosen permission mode now persists across Plan and execution, and is only reset to Ask before edits when you explicitly accept a plan with manual approval.
- Pop-ups — sign-in, the Pro paywall, the first-run setup wizard, and confirmation dialogs — now open as centered cards over a dimmed backdrop with a smooth fade, and close on Esc or an outside click. Sign-in deliberately stays put while a browser login is in progress so it can't be dismissed by accident.
- Your Sidekick account and Pro upsells now open in place inside Project Settings (Project Settings ▸ Sidekick — "Manage account", and the MCP page's upgrade prompt) instead of switching focus to the chat window.
- Project Settings ▸ Sidekick now shows a single Sidekick Account section at the top with both your sign-in and Pro-license status, plus a Refresh button that re-syncs your license through your account without signing out and back in. License purchases now live entirely on the web; the in-editor license-key field and the manual "Download & install latest Pro" button have been removed — installing and updating Pro is handled by the upgrade prompt and the status-bar chip.
Fixed
- The Project Refresh dropdown in Project Settings ▸ Sidekick now uses the same styling as the other Sidekick dropdowns instead of falling back to the default editor look.
- Stopping Claude mid-turn now interrupts the assistant over the live session instead of killing the CLI process, so the persistent session stays alive and your next message continues the same conversation without a cold restart. Stopping also no longer appends a "[Stopped by user]" note to the interrupted reply — it simply stops where it was.
- The account panel opened from the status-bar Update chip no longer splits the chat window into two panes with no way to close it — it now appears as a dismissable pop-up over the chat.
- The account sign-in pop-up now closes itself the moment sign-in completes, so returning to the editor no longer lands you on the Sign out button by reflex.
- Starting sign-in from Project Settings no longer also pops the "Continue in your browser…" dialog in the chat window — the sign-in pop-up now appears only where you opened it.
v2.4.2
Changed
- Chat markdown now renders each paragraph (and heading, list item, table cell, quote) as a single selectable text block instead of splitting it into many pieces around inline code and file links. This fixes text selection breaking mid-paragraph, words wrapping incorrectly at formatting boundaries, and the large number of UI elements per message. Inline code keeps its rounded highlighted chip; detected asset-path links keep their type icon and single-click ping / double-click open.
- Redesigned the Pro paywall with a refined layout: a wide "engines" card that groups the extra providers as labelled chips, dedicated Skills and MCP management feature cards, crisp vector icons drawn in-editor (including the official Model Context Protocol mark), a gold accent hairline, and a clearer price block above the call-to-action.
v2.4.1
Added
- In-editor one-click updates: when a newer version is published, the status-bar chip turns into Update and installs it in place without leaving Unity — free updates after a quick sign-in, Pro updates via your license. The "update available" notification's Update button now runs the same in-editor flow instead of opening the store page.
Changed
- The chat timeline now renders with a virtualized
ListView, removing the previous 50-message render cap — long conversations scroll smoothly from end to end. The assistant "typing" indicator now renders as the trailing row inside the timeline, below the last message, and scrolls together with the conversation instead of sitting in a fixed bar above the composer. - When the assistant presents a plan for review, the chat timeline now scrolls to the top of the plan instead of leaving you at its end — so you start reading from the beginning, with the approval prompt and a jump-to-bottom button still available below.
- The "update available" notification is now anchored at the top of the conversation area instead of overlapping the composer and status bar.
- The installer compares versions semantically (major.minor.patch): it skips reinstalling an equal-or-newer version and applies only genuine upgrades.
Fixed
- Context-window usage ("% used") is now accurate. The window size is no longer hard-coded to 200k: the real per-model window reported by the CLI (e.g. 1M for Opus) is captured from turn usage events, remembered per model, and reused when loading conversation history. The live usage figure now also counts cached input tokens (prompt-cache reads/writes), so long sessions no longer read as nearly empty.
- Empty and brand-new chats now show the branded welcome screen (logo + a rotating inspiring subtitle) instead of a bare "Conversation is empty." line over an empty list. The subtitle is picked at random from a curated set each time the welcome screen appears.
v2.4.0
Added
- "MCP management" is now listed as a Pro feature so the paywall highlights live MCP introspection.
- Entitlement-aware paywall gate: owners who do not yet have the Pro package installed get a direct Install Pro action instead of a purchase prompt.
Changed
- MCP rework. Unity MCP ("MCP for Unity" / Coplay) is no longer pre-configured or auto-connected by default. The previously seeded built-in MCP server entry is removed on upgrade, and Sidekick no longer auto-connects the bridge on window open. Add MCP servers manually under Project Settings > Sidekick > MCP; the status-bar MCP button now opens that page.
- Redesigned MCP settings page: a sectioned server registry, branded collapsible server cards, a Form↔JSON editor with IDE-style auto-indent, a backend-fed "Recommended for Unity" section, and a Lite Pro-upsell teaser for external servers that routes into the paywall.
Fixed
- Readable gold paywall CTA and a compact, centred paywall modal.
- Pro invoice redemption now matches Pro by a stable
package_idinstead of the display name.