Changelog¶
All notable changes to Sidekick Agent Hub (VS Code extension and CLI) will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.22.0] - 2026-07-02¶
Added (CLI)¶
- Working date filter mode: The dashboard's
[D]atefilter parsestoday,yesterday,12h/2d/1w,YYYY-MM-DD, and>/<prefixes instead of silently falling back to substring matching; invalid expressions show the filter error without blanking the list - Mouse-capture toggle:
Mkey and--no-mouseflag restore terminal text selection/copy; state shows in the status bar and persists viacli-config.json - Scrollable help overlay with
j/kand ▲/▼ indicators for short terminals --helpexamples on the root command,quota,extract, anddump; strictchoices()validation for--provider,report --theme,tasks --status, andquota --tier- Confirmation before
account --remove(Claude and Codex paths): interactive y/N, or--yes/--forcefor automation;--json/non-TTY without the flag exits 1
Fixed (CLI)¶
qis typable in the dashboard filter box; panel keybindings (e.g. Mind Mapf) win over shadowable global keys while active; overlays reposition on terminal resize and clamp to narrow screens; the help and changelog overlays clamp their scroll to content (no blank box or frozen scroll-up when over-scrolled); the Sessions summary tasks line renders its total again; detail-pane wrapping matches the active layout mode instead of assuming the default side-panel width
Changed (CLI)¶
- Ctrl+C always quits the dashboard, even with an overlay open;
V/rare inactive on the splash screen
Added (VS Code extension)¶
- Actionable trigger notifications: session-monitoring toasts now carry action buttons. Security triggers (credential file access, destructive commands, sensitive path writes) offer Open Dashboard and Mute This Trigger; noisy mid-session triggers (tool-error bursts, context compaction, agent cycling) offer Snooze 1h and Mute This Trigger; the high-token-usage warning offers Open Dashboard and Snooze 1h. Mute persists
sidekick.notifications.triggers.<id>: false; Snooze is in-memory and clears on window reload - Welcome content for empty monitoring views: the Event Stream, Subagents, and Latest Files Touched views no longer render as blank panes when no agent session is active. Each now explains what will appear there and offers a one-click action (Open Session Dashboard / Refresh Session)
Sidekick: Import Historical Session Datain the Command Palette: the command was registered but never contributed to the manifest, so it could previously only be triggered from the dashboard
Changed (VS Code extension)¶
- BREAKING — three default keyboard shortcuts have moved. The old chords shadowed core VS Code defaults (Explorer view, Debug view, and inline suggest / Copilot inline chat). The features now live on
Ctrl+K/Cmd+Kchords; rebind in Keyboard Shortcuts (search "sidekick") if you prefer the old ones:
| Command | Old (Win/Linux / macOS) | New (Win/Linux / macOS) |
|---|---|---|
Sidekick: Explain Selected Code |
Ctrl+Shift+E / Cmd+Shift+E |
Ctrl+K Ctrl+E / Cmd+K Cmd+E |
Sidekick: Generate Documentation |
Ctrl+Shift+D / Cmd+Shift+D |
Ctrl+K Ctrl+G / Cmd+K Cmd+G |
Sidekick: Quick Ask (Inline Chat) |
Ctrl+I / Cmd+I |
Ctrl+K Ctrl+A / Cmd+K Cmd+A |
Ctrl/Cmd+Shift+Space (Trigger Completion) and Ctrl/Cmd+Shift+M (Transform Selected Code) are unchanged
- Command Palette hygiene: every command now declares the
Sidekickcategory, so palette labels render asSidekick: <title>and all commands still match a "sidekick" search. The five Explain Code and five Explain Error complexity levels now have distinct titles (Explain Code: ELI5vsExplain Error: ELI5, etc.), and sixteen context-only or argument-only commands (explain-level variants,Explain Error with AI,Fix Error with AI,Set Session Provider, and the knowledge-note Edit/Delete/Confirm actions) are hidden from the palette because they would error when invoked bare; they remain available from their context menus, code actions, and the dashboard
Deprecated (VS Code extension)¶
sidekick.zai.tier: now marked with a deprecation message in the Settings UI. Authoritative z.ai quota is read directly from z.ai's quota API; the setting has no effect and is kept only so previously stored values remain valid
Changed (sidekick-shared)¶
- Version bump to 0.22.0: No functional changes; published only to keep the shared library in lockstep with the VS Code extension and CLI. Behavior is identical to 0.21.6
[0.21.6] - 2026-07-02¶
Added (sidekick-shared)¶
- Codex reset credits: New
fetchCodexResetCreditsFromApi()reads ChatGPT'swham/rate-limit-reset-creditsendpoint and returns aCodexResetCreditsSnapshot(available count plus per-credit title/status/expiry), with the newCodexResetCredit/CodexResetCreditsSnapshottypes andcodexResetCreditSchema/codexResetCreditsSnapshotSchemavalidators.fetchCodexQuotaFromApi()now attaches this snapshot to the returned quota state, authenticating with the Codexauth.jsonaccount_id(sent asChatGPT-Account-ID) when present.writeQuotaSnapshot, theCodexQuotaWatcher, and the Codex session provider preserve an existing reset-credits snapshot when a session-sourced write omits it (Codex-only), so local session updates never wipe API-fetched credits. Every reset-credit fetch failure is swallowed and leaves the quota otherwise intact
Added (CLI)¶
- Codex reset credits in
sidekick quota: When Codex quota is fetched from the API (--refresh, or the API-first--allview), the Rate Limits output now shows aReset Credits: N availableline plus a per-creditExpiresrow for each available reset grant
Added (VS Code extension)¶
- Dashboard Codex reset credits: The Codex "Rate Limits" tile now shows a reset-credits panel — the number of available reset grants and each one's expiration. To populate it, the dashboard resolves Codex quota API-first (with automatic fallback to local rollouts and the cached snapshot), and preserves the last API-fetched credits across session-sourced snapshot writes
Changed (CLI, VS Code extension)¶
- Bundled
sidekick-shared0.21.6: Both the CLI and the extension pick upfetchCodexResetCreditsFromApi()and the reset-credits snapshot on Codex quota state
[0.21.5] - 2026-06-30¶
Fixed (sidekick-shared)¶
- Prefer the aggregate Codex rate-limit family over model-specific ones: Codex emits multiple rate-limit families per session keyed by
limit_id— the aggregate plan quota (codex, or absent on older payloads) plus per-model/feature families (e.g.codex_bengalfox,premium). Every local-data selector previously read "the latestrate_limits" without inspectinglimit_id, so a freshly-used per-model family at 0% with a later-resetting window could win the newest-window comparison and mask the real plan quota. A new exportedisAggregateCodexLimit()helper now ranks the aggregate family first in every selection site — the rollout reader, the liveCodexRolloutParser, the cross-file quota ranker, and the snapshot-retention guard — falling back to a model-specific sample only when no aggregate one exists. No-op for Claude (nolimit_id) and z.ai (zai-*)
Fixed (CLI)¶
sidekick quota --allno longer shows Codex at 0%: The aggregate plan quota is now always preferred over a per-model family that reads 0% with a later reset window, so--allmatches--provider codex --refresh.quota --allalso fetches Codex API-first (with automatic local fallback), matching the live Claude/z.ai legs; the single-providerquota --provider codexstays local-by-default (live via--refresh)
Fixed (VS Code extension)¶
- Dashboard Codex tile and status bar show the true plan quota: Through the bundled
sidekick-sharedupdate, the Codex rate-limit tile, status bar, and Codex session provider now surface the aggregate plan quota instead of being masked by a trailing per-model family reporting 0%
[0.21.4] - 2026-06-30¶
Fixed (sidekick-shared)¶
- Live-first active-account resolution: New
resolveActiveClaudeAccount()/resolveActiveCodexAccount()(and theResolvedActiveAccounttype) resolve the currently logged-in account from the live provider auth (~/.claude/.claude.jsonoauthAccount; the~/.codex/auth.jsonid_token JWT) and fall back to the saved registry, mirroring the live-first z.ai path. On an unambiguous match to a saved profile they self-heal the stale active pointer — best-effort, never throwing, never creating or deleting profiles — so registry-keyed data (quota history, auto-switch) tracks the real account.getActiveAccountStatus(), the multi-provider Claude quota path, and the Codex quota watcher now route through these resolvers
Fixed (CLI)¶
sidekick quotashows the logged-in account: The account line now reflects the currently logged-in Claude/Codex account even after a nativeclaude /loginorcodex login, instead of the stale saved registry pointer
Fixed (VS Code extension)¶
- Status bar, dashboard, and session provider track the live account: The Claude status bar, dashboard Codex tile, account status, and Codex session provider now follow the live logged-in account and self-heal the saved active pointer, so an external login is detected as a change
[0.21.3] - 2026-06-23¶
Added (sidekick-shared)¶
- Quota projection helpers: New exported
projectQuotaWindow()/withQuotaProjections(), theFIVE_HOUR_WINDOW_MS/SEVEN_DAY_WINDOW_MSconstants, and theQuotaProjectionInputtype generalize the previously Claude-only end-of-window utilization projection, so Codex and z.ai quota states now populateprojectedFiveHour/projectedSevenDay. Projection is idempotent and honors acapturedAttimestamp
Changed (CLI)¶
sidekick quotaprojects every provider: Quota output is now a unified table with alignednow/projected/resetscolumns, and projected end-of-window utilization is shown for all providers (Claude, Codex, z.ai) — previously Claude only. Bars are clamped to 0–100% and a—placeholder shows when a projection is unavailable;sidekick quota --alluses the same layout
Fixed (sidekick-shared)¶
- Bounded synchronous CLI probes: Every synchronous
execFileSync/spawnSync/execSyncprobe (keychain, Codex login /pgrep,git rev-list,sqlite3) now runs withtimeout: 4000andkillSignal: 'SIGKILL', so a hung CLI, keychain prompt, or database can no longer block the caller indefinitely
Fixed (VS Code extension)¶
- Compact provider-outage status: The dashboard's provider-status card now renders through a dedicated, testable display model (
providerStatusDisplay) with severity, title, summary, an "N affected" count, and anhttp(s)-validated incident link, and inserts upstream status text/links viatextContent/createElementinstead ofinnerHTML(removing an HTML-injection vector)
Security¶
- npm audit: Resolved reported dependency advisories across the monorepo —
dompurify^3.4.11(VS Code webview sanitizer),esbuild^0.28.1, andvitest^4.1.9
Changed (repo)¶
- Repo-wide Prettier formatting: Added a shared
prettier.config.cjs,format/format:checkscripts in all three packages,scripts/format-all.sh/scripts/format-check-all.sh, aFormatCI workflow, and formatting gates in the release workflow
[0.21.2] - 2026-06-22¶
Changed (sidekick-shared)¶
- Authoritative z.ai quota API: z.ai Coding Plan quota is now read from z.ai's
api/monitor/usage/quota/limitendpoint instead of being estimated from observed OpenCode traffic. NewzaiQuotaApi.tsexportsresolveZaiQuota(),fetchZaiQuotaFromApi(),readZaiCredentials(), andquotaStateFromZaiQuotaLimitPayload(), with credential discovery (OpenCode's storedzai-coding-plan→zaitoken, thenANTHROPIC_BASE_URL/ANTHROPIC_AUTH_TOKEN) and cached-snapshot fallback. The former observed-traffic estimator remains exported for compatibility but is deprecated
Changed (CLI)¶
sidekick quota --provider zainow renders authoritative z.ai plan utilization from z.ai's quota API (5-Hour / Weekly windows with real reset times), falling back to a cached snapshot when the API is unavailable. The--tier lite|pro|max|autoflag is deprecated and no longer affects the displayed utilization
Changed (VS Code extension)¶
- z.ai quota in the dashboard: the z.ai card is now labeled "Live z.ai API" or "Cached z.ai API snapshot" (previously "Estimated from observed traffic"). The
sidekick.zai.tiersetting is deprecated and inert
[0.21.1] - 2026-06-21¶
Added (sidekick-shared)¶
- z.ai Coding Plan quota derivation: New
zaiQuota.tsandzaiQuotaWatcher.tsmodules derive an estimatedQuotaStatefor z.ai coding plans from OpenCode assistant turns taggedproviderID ∈ {zai, zai-coding-plan}. Because z.ai exposes no quota/usage HTTP API (verified againstdocs.z.ai/openapi.json), utilization is computed by accumulating per-turn tokens into 5-hour and 7-day rolling windows and comparing against the published per-tier prompt budgets (Lite 80/400, Pro 400/2000, Max 1600/8000 prompts per 5h/week). Authoritative reset timestamps are extracted from trapped1308/1310/1313/1309business error codes when present
Added (CLI)¶
- z.ai Coding Plan quota:
sidekick quota --provider zaiderives and renders z.ai plan utilization from OpenCode traffic already on disk (5-Hour / Weekly windows with per-tier prompt budgets).--tier lite|pro|max|autooverrides the assumed plan tier.sidekick quota --provider opencodenow auto-routes to z.ai quota when z.ai traffic is detected.sidekick quota --allincludes the z.ai section when active.sidekick quota history --provider zairenders a 13-week heatmap
Added (VS Code extension)¶
- z.ai Coding Plan quota in the dashboard: When OpenCode is the active session provider and z.ai routing is detected, the dashboard renders a third quota card (5-Hour / Weekly) labeled "Estimated from observed traffic". z.ai quota flows through the snapshot/history pipeline so the 13-week heatmap works automatically
sidekick.zai.tiersetting: New setting (auto|lite|pro|max, defaultauto) overrides the z.ai plan tier used for utilization math- Quota alerts for OpenCode: Quota-failure alerts now also fire when the active session provider is
opencode, so z.ai rate-limit errors surface as notifications
Fixed¶
- OpenCode data directory resolution:
getOpenCodeDataDir()now probes both the macOS-default~/Library/Application Support/opencodeand Linux-style~/.local/share/opencodecandidate paths and returns whichever actually containsopencode.db, fixing dashboard/quota detection on machines where OpenCode writes to the Linux-style path
Limitations¶
- z.ai quota is estimated, not authoritative, and several capabilities remain unbuilt. z.ai exposes no usage API, so utilization is derived only from OpenCode traffic observed on this machine/workspace and compared against provisional per-tier prompt budgets. z.ai is observed-only (not selectable as an inference provider) and has no account management in this release; auto-tier detection under-reports early in a cycle; reset times are approximate unless a rate-limit error is trapped; OpenCode has no native (non-z.ai) quota. See the OpenCode provider guide for the full list of current limitations and planned work.
[0.21.0] - 2026-06-21¶
Added (sidekick-shared)¶
- Account Management 2.0: Provider-neutral account acquisition and switching APIs for Claude Max and Codex.
beginAccountLogin(),getAccountLoginStatus(),finalizeAccountLogin(), andspawnAccountLogin()support isolated login profiles;listAllAccounts()andswitchAccount()expose a shared account switcher surface for hosts - Claude profile homes: Claude accounts now have canonical profile homes under Sidekick's account store, with account-specific macOS keychain service suffixes and startup migration from legacy flat backups. Switching applies the selected profile back to the live Claude home without destroying unrelated saved accounts
- Terminal sync and quota auto-switch primitives: New opt-in terminal profile pointers, shell hook/launcher helpers, and a default-off
AutoSwitchControllerfor switching to a healthier saved account when quota crosses a configured threshold - Account Zod schemas:
sidekick-shared/schemasand the package root now export account-management validators includingbeginAccountLoginResultSchema,accountLoginStatusSchema,accountManagerResultSchema, andlistAllAccountsResultSchema
Added (CLI)¶
- Account login and all-provider views:
sidekick account --loginstarts provider-isolated login,--provider alllists Claude and Codex accounts together,--launchercreates opt-in terminal launchers, and--auto-switch <pct|off>persists the CLI auto-switch preference - Multi-provider quota output:
sidekick quota --allrenders Claude and Codex quota state together — each provider degrades independently, so one provider's quota still prints when the other is unavailable;--all --jsonemits a provider-keyed payload suitable for dashboards and automation
Added (VS Code extension)¶
- Account sign-in and all-provider switching: New commands for signing into Claude/Codex accounts from the integrated terminal and switching across all saved providers from one QuickPick. The account status bar now opens the all-provider switcher
- Quota auto-switch setting:
sidekick.accounts.autoSwitchThresholdenables the default-off auto-switch controller in the extension host
Documentation¶
- Added an Account Management provider guide covering the API contract, TTY-less login sequence, runtime schemas, and operational caveats for downstream desktop hosts.
[0.20.0] - 2026-06-17¶
Added (sidekick-shared)¶
- Actionable session asset extraction: New Node-only extraction APIs collect URLs, filesystem-validated file paths, commands the agent suggested for the user to run, and plan-mode plans from recent Claude Code and Codex sessions for exactly one cwd.
gatherAssetsForCwd()merges supported agents with recency sorting, dedupe, and per-type caps; lower-levelextractUrls(),extractFilePaths(),extractCommands(),readClaudeAssets(), andreadCodexAssets()are exported for custom tooling. The API is safe for CLI and VS Code extension-host code, but intentionally not exported fromsidekick-shared/browser - Session asset provenance: Extracted assets now carry optional
agent,sessionPath, andsourcemetadata so CLI, VS Code, and custom tools can label where each URL, path, command, or plan came from without changing the stabletext/displayfields
Added (CLI)¶
sidekick extract: New one-shot command for pulling URLs, paths, commands, and plans out of recent Claude Code and Codex chats. Supports grouped colored text,--json,--type url,path,command,plan,--limit, and-i/--interactivepicker actions that open URLs or copy selections. The command preserves exact-cwd scoping and reports OpenCode as unsupported instead of silently reading other providers- Extract output polish:
sidekick extractnow validates invalid--typeand--limitvalues, preservesinChatin JSON output, and labels text output with the source agent for each asset
Added (VS Code extension)¶
- Native asset extraction command:
Sidekick: Extract Session Assetsopens a searchable VS Code QuickPick backed by the shared extractor. URLs open externally, file paths open in the editor at their line when available, commands copy to the clipboard, and plans open as Markdown scratch documents
Thanks to @B33pBeeps (Juan Fourie) for contributing the feature in #17, adapted from his MIT-licensed trawl project.
[0.19.3] - 2026-06-17¶
Added (sidekick-shared)¶
- Assistant turn timeline:
segmentAssistantTurn()now emits a required v2timelinearray that preserves reasoning, narration, and tool groups in original arrival order while keeping the final answer text excluded. The mirrored Zod schemas and public type exports include the new timeline contract for browser and IPC consumers
Changed (sidekick-vscode)¶
- Conversation view interleave: The transcript rail now renders assistant reasoning, tool calls, and narration from the shared assistant-turn timeline, preserving provider-normalized arrival order for Claude, Codex, and OpenCode sessions while keeping the final answer separate. Tool calls render as concise rows with their summary inline, while tool results stay expandable to reveal their output
[0.19.2] - 2026-06-15¶
Added (sidekick-shared)¶
- Assistant turn projection: Browser-safe helpers that segment a provider-normalized assistant turn into a compact, UI-ready Process + Answer shape.
segmentAssistantTurn()keeps only the final contiguous text run asanswerand moves earlier narration, tool calls, and reasoning intoprocess.steps/reasoningBlocks— adjacent tool calls collapse into groupedtoolGroupsteps, and process/reasoning are length-capped (with an "N omitted" marker) while the answer stays uncapped.assistantTurnEventsFromSessionEvents()adapts canonicalSessionEvent[]into the turn-event stream the segmenter consumes, andextractTurnSubagents()/reasoningSummary()/isAssistantTurnSubagentTool()cover ClaudeTasksubagent refs and bold-heading reasoning summaries.Tasktool inputs are projected without leaking the prompt — onlysubagent_typeanddescriptionsurvive. The mirrored Zod schemas (assistantTurnProjectionSchema,assistantTurnEventSchema,assistantTurnProcessStepSchema,assistantTurnSubagentSchema, and friends) validate the shape at UI/IPC boundaries, and the whole module is exposed fs-free via thesidekick-shared/browserandsidekick-shared/schemassubpaths
[0.19.1] - 2026-06-09¶
Added (sidekick-shared)¶
- Zod boundary schemas: Runtime validation for the data shapes that cross process/IPC boundaries — quota (
quotaStateSchema,quotaWindowSchema,providerQuotaStateSchema,claudeProviderQuotaStateSchema,codexProviderQuotaStateSchema,providerQuotaMapSchema,peakHoursStateSchema,quotaFailureDescriptorSchema), quota history (quotaHistorySampleSchema,quotaHistoryDailyBucketSchema), and account status (activeAccountStatusSchema,activeProviderAccountStatusSchema). Each is exported alongside its mirrored TypeScript type extractSessionEvents()helper: Unwraps Claude Code's{ type: 'progress', data: { message } }envelopes — whichsessionEventSchemaalone rejects — into canonicalSessionEvent[]. Recurses through nested envelopes (depth-bounded at 8), returns zero events for unrecognized input, and never throwssidekick-shared/schemassubpath: A dedicated entry point exposing the Zod boundary schemas withoutnode:fs/node:path— lean enough to import into browser bundles or boundary-validation modules without dragging in the rest of the library
Changed (sidekick-shared)¶
- Forgiving model-ID lookups:
getModelContextWindowSize(),parseModelId(), andgetModelPricing()now trim and lowercase their input, so padded or mixed-case IDs (e.g." Claude-Opus-4-8 ") resolve without caller-side normalization.getModelPricing()still tries the verbatim ID first — preserving mixed-case LiteLLM override keys — before retrying normalized sideEffects: false: The package is now marked side-effect-free so downstream bundlers can tree-shake unused exports
[0.19.0] - 2026-06-09¶
Added (sidekick-shared)¶
- Claude Opus 4.8 & Fable 5 support:
claude-opus-4-8andclaude-fable-5(Anthropic's new Mythos-class flagship) are now recognized everywhere models are interpreted — 1M-token context windows ingetModelContextWindowSize(), static pricing (Opus 4.8: $5/$25 per MTok; Fable 5: $10/$50 per MTok, with standard 1.25×/0.1× cache write/read multipliers),parseModelId()recognizes thefablefamily,shortModelName()renders "Fable", and model pickers rank Fable above Opus
Changed (sidekick-shared)¶
- Codex account switching now swaps
~/.codex/auth.json: Switching Codex accounts previously only updated the Sidekick registry pointer and relied onCODEX_HOMEredirection, so codex terminals outside Sidekick never saw the switch.switchToCodexAccount()now mirrors the Claude switch pattern — it syncs the live (rotated) tokens back into the matching profile backup, then atomically swaps the target profile'sauth.jsoninto the system~/.codex/home, with rollback on failure. Live credentials are never overwritten by a staler copy of the same account (Codex rotates refresh tokens; resurrecting an old one permanently invalidates the login). Profile directories under~/.config/sidekick/accounts/codex/profiles/are now pure credential backups —resolveSidekickCodexHome()always returns the system home — andfinalizeCodexAccount()activates freshly added accounts through the same swap. A one-time startup reconciliation migrates installs created under the old dual-home model; unknown live credentials are stashed, never dropped
Fixed (sidekick-shared)¶
- Opus 4.6/4.7 cost over-estimation: Dashed model IDs (
claude-opus-4-6,claude-opus-4-7) used to prefix-match theclaude-opus-4pricing entry ($15/$75) instead of their actual $5/$25 rate, inflating estimated costs 3×. The static table now carries explicit dashed and dotted keys for Opus 4.6/4.7/4.8 and corrects the dottedclaude-opus-4.6entry - Haiku 4.5 unpriced under dashed IDs:
claude-haiku-4-5-20251001matched no static pricing key (only the dottedclaude-haiku-4.5existed), so costs rendered as "—" unless the LiteLLM catalog hydration rescued it. Dashed keys for Haiku 4.5 and Sonnet 4.5/4.6 are now in the static table - Temp-file cleanup in profile state writes:
atomicWriteJson()now removes its.tmpfile when the write or rename fails instead of leaving it behind
Changed (extension)¶
- Refreshed Anthropic model tier defaults: The
claude-apiandopencodeinference providers now resolve fast/balanced/powerful toclaude-haiku-4-5/claude-sonnet-4-6/claude-opus-4-8. The previous defaults were retired or retiring upstream —claude-3-5-haiku-20241022was retired in February 2026 (requests 404), andclaude-sonnet-4-20250514/claude-opus-4-20250514retire June 15, 2026.ApiKeyClient's availability probe and shorthand mapping were updated to match - Fable display names: Dashboard, conversation view, and webview model labels recognize
claude-fable-5; the dashboard context-window tooltip no longer claims a fixed 200K window - Bundled
sidekick-shared0.19.0: Account switching from the extension activates Codex profiles via theauth.jsonswap
Changed (CLI)¶
- Codex account swap warnings:
sidekick account --provider codexsurfaces swap warnings on add, switch, and remove — a running codex process that needs restarting, stale credentials, or OS-keyring credential storage that Sidekick cannot swap
[0.18.5] - 2026-06-04¶
Added (sidekick-shared)¶
- Session context evidence snapshots: New
sessionContextmodule projects a provider-neutral view of what an assistant has "seen" in a session.buildSessionContextSnapshot()extracts layered evidence sources (system, user prompts, tool inputs/outputs, thinking) from canonicalSessionEventstreams;calculateSessionContextPressure()maps token usage to a low/medium/high band (60% / 80% thresholds);createSessionContextProjector()builds snapshots incrementally; andreadSessionContextSnapshot()reads them through a provider reader. New typesSessionContextSnapshot,SessionContextSource,SessionContextCapabilities(observed tools, MCP servers, permission mode, rate limits), andSessionContextPressure. Exported from bothsidekick-sharedandsidekick-shared/browser; all three session providers (claude-code,codex,opencode) gain areadSessionContextSnapshot()method
Fixed (sidekick-shared)¶
- Codex session evidence gaps: The Codex parser now emits
systemaudit events for base instructions and developer/system messages, normalizestoken_countrecords intosystemevents that carry normalized rate limits, expands a singleapply_patchinto oneEditper file, dedupes repeatedexec_command/mcp_tool_callemissions, and preserves MCP server attribution (_sidekickMcpServerName) on synthesized tool inputs.EventAggregatornow understands thesystemevent type — these events are excluded from message counts and from tool/task/plan/subagent extraction, but still contribute to system-prompt context attribution and token totals. A newProviderReaderSessionWatcherplusparseTranscriptFromEvents()route Codex sessions through the canonicalSessionEvent→ transcript path for parity with the other providers - HTML report source labels: Transcript source labels (e.g. "base instructions", "token count", "developer") now render with a dedicated
.message-sourcestyle instead of reusing the model-name badge - Codex stats read failures:
readSessionStatsnow surfaces a malformed-rollout error underDEBUGinstead of swallowing it silently
Changed (extension)¶
- Codex parsing parity:
ProjectTimelineDataServiceand the related extension wiring consume the canonical Codex parsing path (provider reader +parseTranscriptFromEvents), keeping the project timeline, dashboard, and reports consistent with the CLI - Bundled
sidekick-shared0.18.5: Picks up session context evidence snapshots and the Codex evidence gap closures
Changed (CLI)¶
- Consistent Codex transcripts:
sidekick dashboardandsidekick reportnow parse Codex sessions viaparseTranscriptFromEvents(), matching the canonical event pipeline used elsewhere - Bundled
sidekick-shared0.18.5: Picks up session context evidence snapshots and the Codex evidence gap closures
[0.18.4] - 2026-05-27¶
Fixed (sidekick-shared)¶
- Codex quota snapshot selection across multiple rollout files: When multiple Codex sessions report rate-limit data, the resolver now picks the snapshot from the newest reset window and, within the same window, the highest observed utilization — instead of returning whichever rollout file happened to be scanned first. New helpers
isPreferredQuotaHit()andfindAccountRolloutFiles()(which searches across all configured Codex home directories) replace the previous first-match return.shouldKeepExistingSnapshot()in the snapshot cache prevents a stale rollout from overwriting a higher-fidelity cached snapshot for the same reset window
Changed (sidekick-shared)¶
- Peak hours scoped to Claude Code session provider: New helpers
scopePeakHoursToSessionProvider(),isClaudeCodeSessionProvider(), andcreatePeakHoursNotApplicableState()gate peak-hours state on both theclaude-maxinference provider and theclaude-codesession provider.PeakHoursStategains an optionalnotApplicablefield for providers where peak hours are irrelevant
Changed (extension)¶
- Peak hours hidden for non-Claude Code sessions:
PeakHoursServicenow takes agetSessionProviderIdcallback and requires bothclaude-maxinference andclaude-codesession provider before polling. The dashboard pill and status bar glyph are suppressed for OpenCode and Codex session providers, and switching session providers triggers an immediate reconcile
Changed (CLI)¶
sidekick peak --provider <id>: New flag gates peak-hours output on the session provider. When the resolved provider is notclaude-code, the command prints a "not applicable" message instead of calling the upstream endpoint.sidekick peakwithout--providercontinues to auto-detect
Fixed (extension)¶
- Codex quota fallback on dashboard open: When no live Codex session provides quota and the dashboard is opened or the provider switches to Codex, the dashboard now calls
resolveCodexQuotaFromLocalSources()(workspace rollouts → account rollouts → snapshot cache) instead of only reading the snapshot cache directly
[0.18.3] - 2026-05-19¶
Added (sidekick-shared)¶
- Per-workspace quota history (
appendQuotaHistorySample,readQuotaHistoryRange,readQuotaHistoryDailyBuckets,pruneQuotaHistory,getWorkspaceIdFromPath): New append-only JSONL store at~/.config/sidekick/quota-history/<workspaceId>/<provider>.jsonl. 60-second per-sample debounce, 91-day (13-week) retention, atomic prune above 16 KB,0600file mode and0700directory mode, and an in-process append chain that prevents interleaved writes from concurrent callers. Workspace ids aresha256(realpath)[0..16]so the CLI and extension agree on the same store for a given folder. Live append failures are swallowed so the quota emission path is never poisoned, and snapshot writes are mirrored so existing latest-snapshot consumers keep working unchanged CodexQuotaWatcherhistory hook: New optionalworkspaceIdandappendHistorySampleoptions; whenworkspaceIdis provided, every live Codex quota emit also appends a sample to the per-workspace history
Added (CLI)¶
sidekick quota history: New subcommand that renders a 13-week GitHub-contributions-style heatmap of quota utilization for the current workspace. Flags:--weeks <n>(1-26, default 13),--provider claude|codex(default both),--workspace <path>(default cwd). Bucketed glyphs (· ░ ▒ ▓ █) are color-coded by utilization band (≤0 / <25 / <50 / <75 / ≥75), with per-provider rows and a peak / avg / unavailable-days / samples footer. Days that hitavailable: falserender as a red×. With the inherited--jsonflag, emits a{ workspaceId, weeks, providers: { claude?, codex? }, generatedAt }payload — the same shape consumed by the VS Code dashboard
Added (extension)¶
- Quota History dashboard panel: New "Quota History · Last 13 weeks · peak utilization per day" section under the quota readout. Per-provider SVG heatmap (Claude / Codex) using bucketed
var(--vscode-textLink-foreground)shades, per-cell<title>tooltips (date · peak % · sample count), a red overlay for days that hit "unavailable", and a "Less / More" legend. The section auto-hides when no data exists for either provider - History sampling: Every Claude quota refresh from
QuotaServiceand every Codex quota update fromCodexSessionProvidernow writes a sample into the shared workspace history JSONL when a workspace is open and a saved account is active. A newutils/workspaceId.tshelper wrapsvscode.workspace.workspaceFolders[0]?.uri.fsPath → getWorkspaceIdFromPathso the extension and CLI hash the same path to the same id
[0.18.2] - 2026-05-19¶
Added (sidekick-shared)¶
- Codex quota orchestrator (
resolveCodexQuota()): New entry point that resolves Codex rate-limit data in a single call with a configurablesource: 'local' | 'api' | 'auto'. Thelocalpath walks the workspace's most recent Codex rollout, then recent account-level rollouts underCODEX_HOME/sessions, then the account-scoped snapshot cache;apicalls Codex's ChatGPTwham/usageendpoint first with a local fallback;autotries local first and falls back to the API. HelpersresolveCodexQuotaFromLocalSources(),readLatestCodexQuotaFromRollouts(), andfetchCodexQuotaFromApi()are also exported for callers that need finer control - Codex quota types:
CodexQuotaApiOptions,CodexQuotaCreditsSnapshot,CodexQuotaResolveOptions, andCodexQuotaResolveSourceare exported alongside the new functions - Provider-specific quota metadata on
QuotaState: OptionallimitId,limitName,credits,planType, andrateLimitReachedTypefields propagate through quota snapshots, so callers can render plan, limit, and "rate limit reached" reasons without re-parsing upstream payloads
Added (CLI)¶
sidekick quota --refresh: New flag on thequotacommand that, for Codex, explicitly refreshes from the ChatGPT usage API before falling back to local rollout data and cached snapshots. Without the flag, the Codex quota path stays fully local and makes no upstream network call
Changed (CLI)¶
- Codex quota is local-only by default:
sidekick quota --provider codexnow uses the newresolveCodexQuotaorchestrator and only consults local sources (current workspace rollout → account-level rollouts → cached snapshot) unless--refreshis passed. Failure output still includes structuredfailureKind/httpStatus/retryAfterMsfields under--json
Changed (sidekick-shared)¶
CodexRateLimitsaccepts nullable reset fields:primary.resets_at,secondary.resets_at,primary.window_minutes, andsecondary.window_minutesare nownumber | null | undefined, matching the live Codex usage API payload.quotaFromCodexRateLimits()normalizes nullish percentages and timestamps and accepts an additional'api'source value alongside'session'/'cache'CodexQuotaWatcherfalls back to local rollouts: When the active workspace has no live Codex rollout, the watcher now consultsresolveCodexQuotaFromLocalSources()(workspace + account-level rollouts) before falling back to the account-scoped snapshot cache. New optionalmaxTailBytes/maxSessionFilesknobs cap the work done while scanning rollouts
Fixed (sidekick-shared)¶
- Codex
state_N.sqlitediscovery:CodexDatabaseand the provider auto-detector now match bothstate.sqliteand versionedstate_N.sqlitefilenames (preferring the most recently modified DB). Fresh Codex CLI installs that no longer write a plainstate.sqliteare now detected and read correctly JsonlSessionWatcheremits rate-limit-onlytoken_countevents: When a Codextoken_countpayload carriesrate_limitsbut nolast_token_usage/total_token_usage, the watcher now still emits asystemevent with the rate limits attached (summaryRate limits updated). Quota updates can no longer be swallowed just because the same record has no token-usage delta
[0.18.1] - 2026-05-08¶
Added (sidekick-shared)¶
- Shared display formatting (
formatTokenCount(),formatDurationMs()): Single source of truth for compact token (12.5k/1.2M) and duration (5m 30s) rendering, now exported from the root,sidekick-shared/browser, andsidekick-shared/formattingentrypoints — so CLI, webview, and downstream consumers no longer fork their own helpers - Raw JSONL tailing (
createJsonlTail()): Offset-tracked incremental JSONL reads with optional Zod validation, debouncedfs.watchplus catch-up polling, and a post-batch callback that lets aggregation-driven consumers defer expensive UI/metric updates until parsing for a chunk is complete
Changed (VS Code extension)¶
- Public shared imports: Extension code now consumes supported
sidekick-sharedentrypoints instead of reaching intodist/*. The localJsonlParserfile is a compatibility shim over the shared parser/extractors, removing the forked implementation - Shared display formatting: Status bar, session summary, analysis prompt, handoff document, and bundled dashboard webview now reuse the shared token, duration, and cost helpers. Webview dashboard token cards render compact
12.3k/1.2Mtotals (previously12,345); status bar and tooltip helpers continue to use uppercaseK/M
Changed (CLI)¶
- Shared dashboard formatting: Terminal dashboard
fmtNum()andformatDuration()now delegate to the shared helpers, preserving the existing CLI surface (uppercaseK/M, compact1m5sstyle) while removing duplicated rounding logic
[0.18.0] - 2026-05-08¶
Added (sidekick-shared)¶
- Provider-aware quota orchestration (
MultiProviderQuotaService): Coordinates Claude polling, peak-hours enrichment, account labels, transient-failure backoff, and optional Codex quota watcher updates behind one typed{ claude?, codex? }event stream — replacing ad-hoc per-provider polling wiring in downstream consumers - Codex quota watcher (
CodexQuotaWatcher): Discovers the active Codex rollout for a workspace, watches it for live rate-limit updates, persists account-scoped snapshots, and falls back to cached or unavailable states when no live data exists - Account status helper (
getActiveAccountStatus()): Single-pass read of active Claude Code and Codex account status for startup and setup flows - Tool-call extraction helper (
extractToolCall()): Extracts a top-leveltool_useevent, complementing the existingextractToolCalls()assistant-content-block helper - Cost provenance & model display helpers:
calculateCostWithProvenance()andmergeCostSources()preserve whether a cost was provider-reported, locally estimated, or unpriced for honest UI rollups.shortModelName(),getModelDisplayInfo(),compareModelIds(), andsortModelIds()provide reusable display and ranking primitives - Phrase categories (
PHRASE_CATEGORIES): Exposes the category structure behind the existing flatALL_PHRASESarray
Changed¶
- Legacy Claude model parsing:
parseModelId()now recognizes legacy IDs such asclaude-3-opus-20240229andclaude-3-5-sonnet-20241022(version before family) in addition to the modernclaude-{family}-{version}-...form - Version sync: VS Code extension and CLI bumped to 0.18.0 in lockstep with the shared library to keep release tags aligned. No runtime behavior change in the extension or CLI in this release; downstream wiring of
MultiProviderQuotaServiceandCodexQuotaWatcherwill land in a follow-up release
[0.17.7] - 2026-04-28¶
Fixed¶
- Quota snapshot write race:
sidekick-sharednow writes cached quota snapshots through a unique temp file per write and cleans up partial writes on error, preventing concurrent Codex quota updates from colliding onquota-snapshots.json.tmpand emittingENOENTduring active sessions when the VS Code extension and CLI update quota at the same time
[0.17.6] - 2026-04-19¶
Added¶
- Claude peak-hours indicator: Sidekick now surfaces Anthropic's peak-hours schedule (weekdays 13:00–19:00 UTC — session limits drain faster on Free/Pro/Max/Team subscriptions). Shown subtly in the VS Code dashboard (orange pill, only during an active peak) and the status bar (
🟠glyph). In the CLI: newsidekick peakone-shot command, plus peak info appended tosidekick status(forclaude-code) andsidekick quota(for Claude subscriptions). Gated on the Claude Max inference provider so OpenCode / Codex / API-key users never see the indicator or make the upstream call. Data comes from the publicpromoclock.co/api/statusendpoint — a third-party tracker unaffiliated with Anthropic. See the new Peak Hours guide for schedule details, settings, and privacy posture - New settings:
sidekick.peakHours.enabled(defaulttrue) andsidekick.peakHours.notifyOnTransition(defaultfalse, opt-in toast when peak starts or ends)
[0.17.5] - 2026-04-18¶
Added¶
- Default account auto-registration: On first startup, Sidekick now auto-registers the active system Claude Code and Codex credentials as a "Default" account in the shared account registry — without overwriting accounts saved manually. Quota and analytics surfaces that rely on the account registry now work out of the box instead of requiring an explicit
Save Current Claude Account/sidekick account --addfirst. Exposed fromsidekick-sharedasensureDefaultAccounts(), wired into CLI startup (via a non-blocking CommanderpreActionhook so--version/--helpstay fast) and into VS Code extension activation. Idempotent — repeated calls never create duplicates
Thanks to @B33pBeeps (Juan Fourie) for contributing this feature in #16.
[0.17.4] - 2026-04-17¶
Added¶
sidekick-sharedpackaging split: New stable subpath entries —sidekick-shared/browserfor pure, filesystem-free helpers safe in webview/browser bundles (context-window lookup, model parsing, cost math), andsidekick-shared/nodefor Node-only pricing hydration. Plus convenience subpathssidekick-shared/phrases,sidekick-shared/modelContext, andsidekick-shared/modelInfo- Typed
exportsmap onsidekick-shared: Downstream consumers now resolve the new subpaths cleanly with per-entrytypes+defaultconditions. Existingsidekick-shared/dist/*deep imports keep working via a compat entry, so nothing breaks in this release - Webview import guard (VS Code extension): ESLint
no-restricted-importsrule scoped tosrc/webview/**prevents Node-only code from being pulled into browser bundles through a future refactor
Changed¶
- Pricing hydration call sites migrated to
/node: The VS Code extension host and the CLI now importhydratePricingCatalogfromsidekick-shared/nodeinstead of deepdist/*paths or the root. Runtime behavior unchanged; imports now self-document that the code is Node-only
[0.17.3] - 2026-04-17¶
Changed¶
- Changelog hygiene: Republish of 0.17.2 after removing a stray empty
## [Unreleased]heading that was bundled into the 0.17.2 VS Code extension.vsix. No behavioral or code changes — functionally identical to 0.17.2
[0.17.2] - 2026-04-17¶
Added¶
- LiteLLM pricing hydration: Extension and CLI fetch the LiteLLM pricing catalog on startup and cache it to
~/.config/sidekick/pricing-catalog.jsonwith a 24h TTL, 3s timeout, and stale-cache fallback. New model prices land between releases - Expanded pricing coverage: GPT-4o, GPT-4.1, GPT-5.x, o1, o3, and o3-mini are now priced alongside the existing Claude entries
- Reasoning-token billing: OpenAI reasoning tokens are now priced at the output rate
- Provider-omitted cost computation:
EventAggregatorcomputes cost from the pricing table when the provider doesn't report it — the CLI dashboard now shows real dollars for Claude Code and Codex sessions - New VS Code settings:
sidekick.pricing.hydrateFromLiteLLM(defaulttrue) andsidekick.pricing.cacheTtlHours(default24)
Fixed¶
- Context-window % wrong for Opus 4.7 (and other new models): The dashboard and status bar now report accurate context usage for Claude Opus 4.7, Sonnet 4.7, GPT-5.4, and GPT-5.3-Codex variants. The model → context-window map in
sidekick-sharednow includes these families (Opus 4.7 = 1M, Sonnet 4.7 = 1M, GPT-5.4 = 1.05M, GPT-5.3-Codex = 400K, GPT-5.3-Codex-Spark = 128K) instead of falling through to 200K via prefix match. Also honors Claude Code's[1m]suffix as an explicit 1M marker - Silent Sonnet-priced fallback for unknown models: Codex, GPT-5.x, and o-series sessions were being billed at Sonnet rates, silently inventing a dollar figure. Unknown models now return
nullcost and render as—(yellow in the CLI; footer warning +*on totals in the VS Code dashboard)
Changed¶
historical-data.jsonschema v2: adds optionalpricedflag onModelUsageRecordandunpricedModelIdsonSessionSummary. Fix-forward only — v1 records still read correctly, no migration required
[0.17.1] - 2026-04-13¶
Fixed¶
- Codex multi-home session discovery: Provider detection and session monitoring now scan all candidate Codex home directories (managed profile + system
~/.codex/) instead of only the active managed profile, fixing missed sessions when the managed profile home has no activity
[0.17.0] - 2026-04-13¶
Added¶
- Multi-provider account registry: Account management is now provider-aware — each provider (Claude Code, Codex) maintains its own active account with independent switching, stored in a v2 registry format that auto-migrates from v1
- Codex profile management: Full lifecycle for Codex accounts — prepare, finalize, switch, and remove profiles with isolated
CODEX_HOMEdirectories per account - Quota snapshot caching: Cached rate-limit snapshots per provider/account in
~/.config/sidekick/quota-snapshots.jsonfor offline fallback with "cached from" indicators - VS Code multi-provider account UI:
Switch Account,Add Account, andRemove Accountcommands now work for both Claude Code and Codex — with guided login flow for Codex profiles - CLI multi-provider account commands:
sidekick account --provider codexfor Codex account management with--add,--switch-to, and--removeby email, label, or ID
Fixed¶
- Account type safety: Added type guards and typed overloads to
AccountService, removing unsafe type assertions from extension commands - Email normalization: CLI Claude account lookup now normalizes email case for reliable matching
- Codex monitoring recovery:
restartCodexMonitoringfailures are now handled gracefully instead of propagating
[0.16.1] - 2026-03-27¶
Fixed¶
- Provider status scoping: VS Code and CLI dashboards now scope degraded-service notices to the monitored session provider — Claude status for Claude Code, OpenAI status for Codex, and no provider-status banner for OpenCode
- Cross-platform account tests:
sidekick-sharedaccount tests now mock credential I/O instead of depending on platform-specific credential stores, restoring green test runs on macOS
[0.16.0] - 2026-03-23¶
Added¶
- Shared library: Zod schemas for runtime JSONL event validation (
sessionEventSchema,messageUsageSchema,sessionMessageSchema) - Shared library: Token usage & tool call extractors — pure functions
extractTokenUsage()andextractToolCalls()for single-event processing - Shared library: Model info & pricing —
getModelInfo(),calculateCost(),formatCost()ported from VS Code extension into shared module - Shared library: Typed JSONL parser — optional
schemaparameter onJsonlParserfor Zod-validated parsing - Shared library: QuotaPoller class — reusable polling with exponential backoff, active/idle intervals, and cached fallback
- VS Code: Tool result pairing — Tool Inspector now shows truncated tool outputs (read content, bash stdout, search results) paired with each tool call
- VS Code: Recursive subagent tree — Subagent tree view now displays nested parent/child relationships using trace-based parsing
- CLI: Consistent cost formatting — all cost displays now use shared
formatCost()with intelligent decimal precision
Changed¶
- VS Code: ModelPricingService now delegates to
sidekick-shared/modelInfo(reduced from 256 to ~50 lines) - CLI: QuotaService rewritten to wrap shared
QuotaPollerinstead of manual polling loop - CLI: modelContext now re-exports
getModelInfofrom shared library
[0.15.2] - 2026-03-18¶
Fixed¶
- CLI help descriptions: Updated
quotaandstatuscommand descriptions to reflect provider-aware behavior sidekick quota --provider: Added local--provideroption sosidekick quota --provider codexworks without requiring the flag before the subcommand
[0.15.0] - 2026-03-18¶
Added¶
- OpenAI status page monitoring: The CLI dashboard and VS Code extension now poll OpenAI's status page alongside Claude's, showing incidents and degraded components for Codex users
- Codex rate limits as first-class quota: Codex CLI rate-limit data (from token_count event streams) now displays in the VS Code dashboard quota section, CLI Sessions panel, and
sidekick quotacommand — with provider-aware labels ("Rate Limits" vs "Subscription Quota") throughout
Fixed¶
- QuotaService polling for non-Claude providers:
QuotaService.start()no longer runs for Codex sessions, preventing failed OAuth calls from overwriting valid rate-limit data
[0.14.2] - 2026-03-16¶
Fixed¶
- Quota polling interval: Reduced quota refresh from every 30 seconds to every 5 minutes in both the VS Code extension and CLI dashboard to avoid unnecessary API calls
- SessionsPanel
detailWidth()call: Removed unused parameter fromdetailWidth()in the CLI Sessions panel - Extension type fixes: Fixed null assertion on
sessionMonitorand improved Promise typing in the connection test flow
Added¶
- Provider status dashboard message: New
updateProviderStatusmessage type for pushing provider status updates to the dashboard webview
[0.14.1] - 2026-03-14¶
Fixed¶
- Per-model context window sizes: Claude Opus 4.6 and Sonnet 4.6 now correctly report 1M context windows instead of 200K. Context gauge, status bar, and session summaries show accurate utilization percentages for all models
- Missing model: Added
claude-haiku-4-5to the context window lookup table
Changed¶
- Centralized model context map: Consolidated three duplicate model-to-context-size maps (in
claudeCode.ts,openCode.ts,codex.ts, and the CLI dashboard) into a single canonicalgetModelContextWindowSize()function insidekick-shared - Dynamic context window override: All three providers (Claude Code, OpenCode, Codex) now support runtime-reported context window limits via
setDynamicContextWindowLimit(), allowing accurate context sizing when the same model has different limits per subscription tier or access method
[0.14.0] - 2026-03-12¶
Added¶
- Native Multi-Account Switching: Save, list, and switch between multiple Claude Code accounts from within Sidekick — no more manual
claude login/ logout cycles. Accounts are stored in~/.config/sidekick/accounts/with atomic writes, strict file permissions, and rollback-on-failure safety - Shared Account Manager (
sidekick-shared): Newaccounts.tsmodule withaddCurrentAccount(),switchToAccount(),removeAccount(),listAccounts(),getActiveAccount(), andreadActiveClaudeAccount()— consumed by both the VS Code extension and CLI - VS Code Account Commands: Three new commands —
Sidekick: Save Current Claude Account,Sidekick: Switch Claude Account(QuickPick), andSidekick: Remove Claude Account— with automatic auth client reset and quota refresh on switch - Account Status Bar: New status bar item (visible when 2+ accounts are managed) showing the active account label or email, with click-to-switch
- Account Switching in Status Bar Menu: The main Sidekick status bar menu now shows Switch Account or Save Current Account when the inference provider is Claude Code
- CLI
sidekick accountCommand: Manage accounts from the terminal —--add,--label,--switch,--switch-to <email>,--remove <email>, and--jsonoutput - CLI Quota Account Label:
sidekick quotanow shows the active account email above the quota bars when multi-account is enabled - macOS Keychain Support: Credential I/O now reads and writes Claude Code's active credentials via the system Keychain on macOS (where Claude Code stores them), instead of assuming
~/.claude/.credentials.jsonon all platforms. Fixes account switching, quota checks, and account saving on macOS
[0.13.8] - 2026-03-12¶
Added¶
- Structured quota failure metadata:
fetchQuota()now classifies unavailable states withfailureKind,httpStatus, andretryAfterMs, so first-party consumers and external callers can distinguish auth failures, network errors, rate limits, server failures, and unexpected API responses without parsing human-readable strings - Shared quota failure presentation helper: First-party consumers now share a common
describeQuotaFailure()helper for consistent quota error copy, severity mapping, retryability hints, and stable alert keys
Changed¶
- CLI quota UX:
sidekick quotaand the CLI dashboard now render structured quota failure states with clearer auth/rate-limit/server copy, show unavailable quota inline in the Sessions panel, and fire low-noise transition-based quota toasts instead of relying on raw error strings - VS Code quota UX: The dashboard now renders structured unavailable quota states, shows lightweight dashboard toasts on new quota failure transitions, and stores those alerts in dashboard notification history without using native VS Code popup notifications
[0.13.7] - 2026-03-11¶
Changed¶
- CLI npm README sync: Updated the published CLI package README to match the current OpenCode monitoring guidance, including platform-specific data directories and the
sqlite3runtime requirement - DeepWiki badge cleanup: Removed Ask DeepWiki badges from documentation pages and the published CLI package README while keeping the repo root README badge intact
[0.13.6] - 2026-03-11¶
Changed¶
- Refreshed CLI Dashboard Wordmark: Updated the CLI dashboard wordmark/header styling for a cleaner, more intentional branded splash experience
Fixed¶
- OpenCode DB-backed monitoring: Manual selection now accepts synthetic
db-sessions/<projectId>folders, and workspace discovery now resolves OpenCode projects by worktree, sandboxes, and session directory instead of silently falling back to legacy file paths - OpenCode runtime notices: VS Code and CLI now show OpenCode-only actionable notices when
opencode.dbexists butsqlite3is missing, blocked, or otherwise unusable in the current environment
[0.13.5] - 2026-03-10¶
Added¶
- Provider Status Monitoring: New
fetchProviderStatus()in sidekick-shared pollsstatus.claude.comfor API health — returns indicator, affected components, and active incidents with graceful fallback on network errors - CLI
sidekick statusCommand: One-shot command with color-coded text output and--jsonmode for checking Claude API status - CLI Dashboard Status Banner: Status bar shows a colored
● API minor/major/criticalindicator when Claude is degraded; Sessions panel Summary tab shows affected components and active incident details - VS Code Dashboard Status Banner: Dashboard gauge row shows a color-bordered banner with indicator, affected components, and incident link when Claude API is degraded; hidden when all systems are operational
[0.13.4] - 2026-03-08¶
Fixed¶
- Onboarding Phrase Spam: Motivational phrase on splash screen and detail pane no longer changes every render tick (~80ms) — memoized so it stays stable until a meaningful state change (fixes #13)
Changed¶
- Simplified CLI Logo: Replaced 6-line ASCII robot art with a compact 1–2 line text header across splash, help, and changelog overlays — renders cleanly in all terminals
- Removed Dead Branding Exports: Removed unused
getSplashContent()andHELP_HEADERfrom branding module
[0.13.3] - 2026-03-04¶
Changed¶
- Shared Task Tracking Consolidation: Moved task lifecycle logic (TodoWrite, UpdatePlan, Agent/Task spawn, goal gate detection) from VS Code
SessionMonitorinto the sharedEventAggregator— CLI and shared library consumers now get full task tracking out of the box - Shared
parseTodoDependenciesExport: Dependency-parsing utility for OpenCode todos now exported fromsidekick-sharedfor external use
Fixed¶
- Task Deduplication:
addBlockedByandaddBlocksarrays no longer accumulate duplicate entries on repeated TaskUpdate calls - Active Task Tracking: Active task ID now correctly cleared when a task transitions from
in_progressto another status (was only cleared on delete) - TaskCreate Error Handling: Failed TaskCreate tool calls (error results) no longer create phantom tasks in the tracked state
- Goal Gate Re-evaluation: Goal gate status re-evaluated after every TaskUpdate, not just on initial creation
- Task Timestamps: TaskCreate timestamps now preserved from the tool_use event rather than always using the result timestamp
[0.13.2] - 2026-03-04¶
Added¶
- Shared Library npm Publication:
sidekick-sharedpublished to npm as a standalone package — provides types, parsers, providers, readers, formatters, aggregation, search, reporting, credentials, and quota for building tools on top of Sidekick session data - CI/CD Publish Shared Job: Release workflow now includes a
publish-sharedjob that lints, tests, builds, and publishessidekick-sharedto npm before the CLI publish step - Shared Library Issue Templates: Bug report and feature request templates now include a "Shared Library (sidekick-shared)" component checkbox
[0.13.1] - 2026-03-04¶
Added¶
- CLI
sidekick quotaCommand: One-shot subscription quota check showing 5-hour and 7-day utilization with color-coded progress bars and reset countdowns — supports--jsonfor machine-readable output - Quota Projections: Elapsed-time projections shown alongside current utilization in the CLI quota command, TUI dashboard, and VS Code dashboard — projects end-of-window usage based on linear extrapolation (e.g.,
40% → 100%)
[0.13.0] - 2026-03-03¶
Added¶
- VS Code Toast Notifications: Dismissable toast notifications in the dashboard webview with
aria-livefor screen readers — copying a CLAUDE.md suggestion now shows "Copied to clipboard" feedback - VS Code Reduced Motion Support:
prefers-reduced-motionmedia queries across all webviews — animations and transitions disabled when OS-level setting is enabled - VS Code Keyboard Navigation for Explain Panel: Complexity level selector is now a proper segmented control with
role="tablist"and roving tabindex — Arrow, Home, and End keys navigate between levels - VS Code Improved Focus Indicators: Focus-visible outlines upgraded to 2px with positive offset across all webviews for better keyboard navigation visibility
- VS Code ARIA Landmarks: Explain and Error panels use semantic
<main>,role="region",aria-live,role="status",role="alert", andaria-labelattributes throughout - VS Code Theme-Aware Gauge Colors: Context usage gauge reads colors from VS Code theme CSS variables instead of hardcoded RGB values
- VS Code Redesigned Explain Panel: Complexity selector replaced with a unified segmented control (bordered pill-style bar) with smooth hover/active transitions
- VS Code Redesigned Error Panel: Explanation sections now have color-coded left borders (red/orange/green), section icons, padded card-like backgrounds, and staggered slide-in entrance animations
- VS Code Three-Dot Pulse Loader: Replaced spinning circle loader with a three-dot pulse animation in Explain and Error panels
- VS Code Improved Empty States: All 7 sidebar panels have rewritten empty-state copy with icons, titles, and clearer instructions
- VS Code Card Entrance Animations: Fade-in animations with stagger delay in Task Board, Plan Board, and Project Timeline
- VS Code Custom Scrollbar and Selection Styling: Themed 6px scrollbars and VS Code-matching text selection colors across all webviews
- VS Code Apply Fix Button States: Animated "Applying..." state, green "Applied" confirmation, hover lift, and active press effects
- VS Code Narrow Viewport Support: Responsive styles for sidebar panels narrower than 260px
Changed¶
- VS Code Pulse Animation Throttling: Value pulse animations in the dashboard throttled to once per 800ms per element, reducing visual noise during rapid updates
- VS Code Inline Styles Replaced: Context health score and truncation warnings now use CSS classes instead of inline styles
Fixed¶
- Codex SQL Parameter Binding: Fixed
string.replace('?', ...)only replacing the first placeholder — now uses regex with sequential index counter so each?maps to the correct parameter - Codex Double Filesystem Stat: Collapsed redundant
existsSync+statSynccalls inCodexDatabase.isAvailable()to a singlestatSyncin try/catch
Security¶
- XSS Prevention: Added
escapeHtml()across all innerHTML interpolations in Dashboard, MindMap, TaskBoard, and webview scripts - Cryptographic CSP Nonces: Nonce generation now uses
crypto.getRandomValues()instead ofMath.random() - Command Injection Prevention: CLI discovery and version checks now use
execFileSync/spawnSyncinstead ofexecSyncwith string interpolation - URL Protocol Validation:
openExternalhandler validates^https?://before opening URLs, preventingfile://andjavascript:protocol attacks
[0.12.10] - 2026-03-01¶
Added¶
- Shared FrequencyTracker: Generic LRU-bounded frequency counter for tracking tool name, event type, and keyword frequency across sessions
- Shared HeatmapTracker: 60-minute rolling circular buffer tracking event activity intensity per minute
- Shared PatternExtractor: Simplified Drain-style algorithm that clusters event summaries into templates (e.g.
Read src/<*>.ts) to surface repetitive tool patterns - Shared EventHighlighter: Keyword-based semantic syntax highlighting for event content — errors red, success green, warnings yellow, actions cyan, file paths magenta, HTTP status/method coloring — with blessed, ANSI, and HTML output formats
- Shared AdvancedFilter: Four filter modes — substring, fuzzy, regex, and date range — with search-term highlighting
- CLI Events Panel (key 7): Scrollable live event stream with type badges, timestamps, and highlighted summaries; detail tabs for full event JSON and surrounding context
- CLI Charts Panel (key 8): Tool frequency bars, event distribution, 60-minute activity heatmap (
░▒▓█), and pattern analysis with frequency bars - CLI Multi-Mode Filter:
/filter overlay now supports substring, fuzzy, regex, and date modes — Tab cycles modes, regex mode shows validation errors - CLI Search Term Highlighting: Active filter terms highlighted in side list items
- VS Code Analytics Charts: Tool frequency bar chart, event distribution doughnut chart, activity heatmap grid, and event patterns section in the dashboard webview — theme-safe with runtime CSS variable resolution
- VS Code Event Stream Tree View: Live sidebar tree showing color-coded session events with type icons, timestamps, and ring buffer of 200 events
- Tests for FrequencyTracker, HeatmapTracker, PatternExtractor, EventHighlighter, and AdvancedFilter
Changed¶
- Shared EventAggregator: Now tracks tool frequency, word frequency, event patterns, and heatmap buckets via the new aggregation primitives
- CLI Timeline Highlighting: Event summaries in the Sessions panel Timeline tab now use semantic keyword coloring
Removed¶
- CLI Search Panel: Removed redundant Search panel (previously key 7) — the
/filter serves the same purpose with better multi-mode support
[0.12.9] - 2026-02-28¶
Added¶
- VS Code Hourly Drill-Down: Clicking a day bar in the dashboard historical chart now shows per-hour token/cost breakdown
- VS Code Content Security Policy: CSP nonce added to the Generate HTML Report webview (security hardening)
- VS Code
setSessionProviderCommand:sidekick.setSessionProvidernow discoverable in the Command Palette - VS Code Notification Toggles: New notification trigger toggles for
sensitive-path-writeandcycle-detectedin Settings - VS Code Offline Assets: Chart.js and D3.js bundled locally — dashboard and mind map now work offline (no CDN dependency)
- VS Code ARIA Accessibility: ARIA attributes across 6 webview panels (Dashboard, MindMap, ToolInspector, TaskBoard, PlanBoard, ProjectTimeline) — tab roles, live regions, toggle states, and labeled icon buttons
- CLI Standalone Data Commands:
sidekick tasks,sidekick decisions,sidekick notes,sidekick stats,sidekick handofffor accessing project data without launching the TUI - CLI
sidekick search <query>: Cross-session full-text search from the terminal - CLI
sidekick context: Composite output of tasks, decisions, notes, and handoff for piping into other tools - CLI
--listflag onsidekick dump: Discover available session IDs before requiring--session <id> - CLI Search Panel: Search panel (panel 7) wired into the TUI dashboard
- Shared
HourlyDatatype andgetHourlyData(): New method in HistoricalDataService for hourly breakdowns - 125 tests for EventAggregator (1,579 lines of core logic, previously 0 test coverage)
- 17 tests for CompletionCache
- 19 tests for BurnRateCalculator
- 18 tests for tokenEstimator
- 57 tests for diffFilter
Changed¶
- VS Code Cancellable AI Operations: Long-running AI operations (test connection, commit message, docs, explain, error analysis, inline completions) are now cancellable via the progress notification
- VS Code
sidekick.inlineTimeoutdeprecated: Usesidekick.timeouts.inlineCompletioninstead (legacy setting still honored as fallback) - VS Code Completion Hint Settings:
showCompletionHintandcompletionHintDelayMssettings now properly wired (were previously ignored) - CLI
taskMergerutility: DuplicatemergeTaskslogic extracted into sharedtaskMergerutility - CLI Model Constants: Hardcoded model IDs extracted to named constants
Fixed¶
- VS Code
stopMonitoringdisposable leak: Fixed disposable leak on repeated stop/restart cycles - VS Code Production Build: esbuild production builds now run in parallel (faster builds)
- CLI
conventionicon: Notes panel icon replaced with validtiptype - CLI Linux Clipboard: Now supports Wayland (
wl-copy) andxselfallbacks, with error messages instead of silent failure - CLI
provider.dispose(): Added todumpandreportcommands (prevents SQLite connection leaks)
[0.12.8] - 2026-02-28¶
Added¶
- VS Code Design Token System: Shared design tokens (
getDesignTokenCSS(),getSharedStyles()) providing consistent spacing, typography, radius, color, transition, and elevation variables across all 5 webview panels - Micro-interactions: tab fade-in, timeline slide-in, progress bar shimmer, active status pulse, value update flash animation
- Dashboard visual hierarchy: tier dividers, group summaries when collapsed, count badges, accent borders on expanded sections
- Card hover micro-lift, active plan/session glow, section title opacity treatment
- Skeleton loading states replacing text-only loading messages
- Shared component tokens applied to headers, status badges, icon buttons, and cards across Dashboard, MindMap, TaskBoard, PlanBoard, and ProjectTimeline providers
Changed¶
- CLI Dashboard UI/UX Polish: Visual overhaul of the TUI dashboard for better hierarchy, consistency, and readability
- Splash screen and help overlay now display the robot ASCII logo (matching the changelog overlay)
- Toast notifications show severity icons (✘ error, ⚠ warning, ● info) with inner padding
- Focused pane uses double-border (
╔═╗║╚═╝) for clear focus indication - Section dividers (
── Title ────) replace bare bold headers throughout the summary, agents, and context attribution views - Tab bar: active tab underlined in magenta, inactive tabs dimmed, bracket syntax removed
- Status bar: segmented layout with left (brand), center (provider/events), and right (keybindings) zones using
│separators; keys bold, labels dim - Summary metrics condensed: elapsed/events/compactions on one line, tokens on one line with cache rate and cost, bold values with dim labels
- Sparklines now display peak metadata annotations
- Progress bars use blessed color tags for consistent coloring
- Help overlay uses dot-leader alignment (
key ···· description) for all keybinding rows - Empty state hints per panel (e.g. "Tasks appear as your agent works.")
- Session picker groups sessions by provider with section headers when multiple providers are present
[0.12.7] - 2026-02-27¶
Added¶
- HTML Session Report: Self-contained HTML report with full transcript, token/cost stats, model breakdown, and tool-use summary — zero external dependencies
- Transcript parser extracts user/assistant/system messages with thinking blocks, tool calls, and tool results from JSONL session files
- Stats cards show total tokens, cost, duration, and model usage at a glance
- Collapsible thinking blocks and tool detail sections for readability
- Dark/light theme support
- VS Code:
Sidekick: Generate HTML Reportcommand, also available as "HTML Report" option inDump Session - CLI:
sidekick reportcommand with--output,--theme,--no-open, and--no-thinkingflags - TUI Dashboard: press
rto generate and open an HTML report for the current session
Changed¶
- Code quality pass: Simplified ternary expressions, replaced
varwithconst/let, deduplicated repeated logic acrossDashboardViewProvider,MindMapViewProvider, and shared library modules
[0.12.6] - 2026-02-26¶
Added¶
- Session Introspection Pipeline: New analysis layer for deep session inspection
- Noise classifier filters irrelevant tool events (system reminders, sidechains) from analysis
- Tool summarizer aggregates tool events into concise summaries
- Debug log parser extracts structured data from Claude Code debug logs
- Session activity detector classifies session state (active, idle, stalled)
- Subagent trace parser for analyzing subagent execution chains
- Session path resolver discovers related files (debug logs, plan files, JSONL) for a session
- Session Dump Command: Export session data in text, markdown, or JSON format
- VS Code:
Sidekick: Dump Sessioncommand (Command Palette, status bar, toolbar) - CLI:
sidekick dumpcommand with--format,--width, and--expandoptions - Shared formatters ensure identical output between VS Code and CLI
- Plans Panel Re-enabled: Plans UI restored in both VS Code and CLI
parsePlanMarkdown()now handles simple bullet points (- Step,* Step)- Plan file discovery reads from
~/.claude/plans/via session slug cross-reference - Plans panel re-enabled in CLI dashboard as fallback data source
- OpenCode & Codex Provider Improvements:
- OpenCode model tier mapping (tiers resolve to concrete model IDs instead of being dropped)
- Codex subagent scanning via
forked_from_id(database + filesystem) getCurrentUsageSnapshot()for real-time token tracking on Codex and Claude Code- New Phrase Categories: 3 new categories (25 phrases each) — Rubber Duck, Dependency Hell, Stack Overflow
Fixed¶
- Destructive command false positives:
/dev/null,/dev/stdout,/dev/stderrredirects no longer trigger destructive command alerts - Old snapshot format migration: Restoring sessions from pre-0.12.3 snapshots no longer shows empty timeline entries — field names are now migrated from old format
Changed¶
- Phrase library deduplicated: Moved ~1,300 lines of identical phrase content from CLI and VS Code into
sidekick-sharedas a single source of truth (net -1,231 lines of duplication)
[0.12.5] - 2026-02-24¶
Fixed¶
- CLI update check too slow to notice new versions: Reduced npm registry cache TTL from 24 hours to 4 hours so upgrade notices appear sooner after a new release
[0.12.4] - 2026-02-24¶
Fixed¶
- Session crash on upgrade: Fixed
d.timestamp.getTime is not a functionerror when restoring tool call data from session snapshots —Dateobjects were serialized to strings by JSON but not rehydrated on restore, causing the session monitor to crash on first run after upgrading from 0.12.2 to 0.12.3
[0.12.3] - 2026-02-24¶
Added¶
- Unified Session Aggregation Layer: Types, parsers, DB wrappers, and aggregation logic extracted from the VS Code extension into
sidekick-shared, so both the extension and CLI consume a single implementation EventAggregatorprovides tokens, tools, tasks, subagents, plans, context attribution, compaction, burn rate, and latency tracking for any consumer- Snapshot sidecar persistence for fast session resume — avoids replaying the full event log on reconnect
- Net reduction of ~4,100 lines of duplicated code across the three packages
- Loading Indicator: Status bar shows a loading spinner during initial session replay so it's clear the dashboard is catching up
- Latest-Node Indicator: The most recently added node is visually marked
- VS Code mind map: subtle pulse animation on the latest D3 node
- CLI mind map: yellow marker on the latest tree/boxed node
- Plan Analytics: Agent plans are now a first-class, analytically-rich data type across the VS Code extension and CLI
- Enriched plan data model: Plan steps track complexity (low/medium/high), timing, token usage, tool call counts, cost, and error messages
- Complexity detection: Automatic classification from explicit markers (
[high],[low]) and keyword heuristics (refactor → high, fix → low) - Mind Map enrichments (VS Code): Plan step nodes color-coded by complexity (red=high, yellow=medium, green=low), sized by token usage, enriched tooltips
- CLI plan display: Tree and boxed mind map views show progress bars, per-step metrics, and completion stats
- Cross-provider plan extraction: Shared
PlanExtractorhandles Claude Code, OpenCode, and Codex plans — CLI no longer ignores Claude Code and OpenCode plans - Handoff integration: Session handoff documents include a "Plan Progress" section with completed/remaining steps
- Plan-to-cost attribution: Per-step dollar cost via ModelPricingService
- Mind Map Legend Interaction (VS Code): Legend items are now clickable and hoverable
- Hover highlights all nodes of that category; everything else fades
- Click locks the highlight in place; click again to clear
- Mind Map Phase Grouping (VS Code): Plan steps with phases are grouped under intermediate phase nodes with sequential inter-phase links
- CLI Node Type Filter: Press
fon the Mind Map tab to cycle through node type filters — non-matching sections render dimmed
Fixed¶
- Kanban board regression: Subagent and plan-step tasks now correctly appear in the kanban board — previously they were lost during the aggregation refactor
- First-load performance (VS Code): Suppressed hundreds of wasteful UI update events during initial session replay, making the first load noticeably faster
Changed¶
- Plan UI surfaces temporarily disabled: Dashboard Plan Progress/History sections, Plans sidebar panel (VS Code), Plans panel (CLI), and plan persistence are disabled until plan-mode event capture is reliably working end-to-end. Plan nodes in the mind map remain active.
- CLI
DashboardStatenow delegates to sharedEventAggregatorinstead of maintaining its own aggregation logic
[0.12.2] - 2026-02-23¶
Added¶
- CLI update notifications: The CLI dashboard now checks npm for newer versions on startup (cached for 24h) and shows a yellow banner in the status bar when an update is available
- Extension CLI version check: When opening the CLI dashboard from VS Code, the extension checks if the installed CLI version is outdated and offers a one-click update
[0.12.1] - 2026-02-23¶
Fixed¶
- CLI dashboard launch from VS Code: Fixed exit code 127 when launching the CLI dashboard via the "Open CLI Dashboard" command on systems using nvm, volta, or other Node version managers. The terminal now injects the CLI's bin directory into
PATHso thenodebinary is found when shell init is bypassed byshellPath. - CLI discovery for nvm users: Added nvm installation paths (
~/.nvm/versions/node/*/bin/) to the common path scan so the CLI is discovered without relying onwhich. - GitHub Release assets: The
.vsixextension file is now attached to each GitHub Release for direct download.
[0.12.0] - 2026-02-22¶
Added¶
- Truncation Detection: Detects when agent tool outputs are silently truncated by the runtime
- Scans every tool result for 6 known truncation markers (
[Response truncated,content_too_long,<response clipped>, etc.) - Dashboard shows total truncation count and per-tool breakdown with warning indicator
- Truncation events recorded on
SessionStatsfor handoff and summary consumption - Files with 3+ truncated outputs automatically surfaced as knowledge note candidates (gotcha type)
- Context Health Monitoring: Tracks context fidelity as compactions degrade the conversation
- Fidelity score starts at 100% and decreases with each compaction event based on count and reclaimed percentage
- Color-coded dashboard gauge: green (70-100%), yellow (40-69%), red (below 40%)
- Handoffs include a "Context Health Warning" section when fidelity drops below 50%
- Score available on
SessionStats.contextHealthfor downstream consumers - Goal Gates: Automatic detection and visual flagging of critical tasks
- Tasks flagged when matching critical keywords (CRITICAL, MUST, blocker, required, etc.) or blocking 3+ other tasks
isGoalGateproperty onTaskCard,PersistedTask, andTaskSummaryItem- Kanban board: red left border and warning badge on goal-gate cards
- Mind map:
isGoalGateproperty on task nodes for distinct visual treatment - Tasks pending across multiple sessions auto-flagged as goal gates in
TaskPersistenceService - Incomplete goal gates get a dedicated section in handoff documents
- Cycle Detection: Identifies when agents enter repetitive tool-call loops
- Sliding-window algorithm (
cycleDetector.ts) with configurable window size (default: 10 calls) - Detects repeating patterns of length 1-3 with 2+ repetitions via signature hashing
- VS Code warning notification with affected file list when cycles are detected
- Throttled to 60-second intervals to avoid notification spam
SessionAnalyzeremitscycle_detectedinefficiency type- Mind map marks cycling files with
isCyclingindicator (checked at 6 and 10-call windows) - Comprehensive test suite for the detection algorithm
- "Open CLI Dashboard" VS Code Command: New command
Sidekick: Open CLI Dashboardlaunches the Sidekick TUI dashboard in a VS Code terminal, providing quick access to session monitoring without leaving the editor - Install the CLI separately with
npm install -g sidekick-agent-hub
Fixed¶
retry_loopinefficiency detection: Now properly emits when consecutive fail-retry pairs are detected on the same tool and target (previously counted failures but never produced inefficiency entries)command_failureinefficiency detection: Now correctly filters to only failed Bash calls and emits when the same base command fails 3+ times
[0.11.0] - 2026-02-19¶
Added¶
- Knowledge Notes System: Capture reusable knowledge (gotchas, patterns, guidelines, tips) attached to files with lifecycle tracking
- Manual Notes: Select code, right-click → "Add Knowledge Note", choose type (gotcha, pattern, guideline, tip), enter content
- Gutter Icons: Distinct SVG icons per note type appear in the editor gutter next to annotated lines
- Hover Tooltips: Hover over gutter icons to see note content, type, status, and importance
- Tree View: "Knowledge Notes" panel in the Session Monitor sidebar groups notes by file with click-to-navigate
- Staleness Lifecycle: Notes transition through active → needs review (30 days) → stale (90 days) → obsolete (file deleted), with importance-weighted decay
- Auto-Extraction: Repeated errors on the same file, recovery patterns, and file-specific guidance suggestions automatically generate candidate notes in the dashboard for review
- Auto-Surfacing: Active knowledge notes for touched files are injected into GuidanceAdvisor analysis prompts to avoid duplicate suggestions
- Mind Map Integration: Active notes appear as amber nodes linked to their file nodes (or session root if file not in graph)
- CLAUDE.md Injection: New command
Sidekick: Inject Knowledge Notesappends a## File-Specific Knowledgesection to your instruction file - Note Management: Right-click notes in the tree view to edit (content, type, importance), delete, or confirm (reset staleness)
- Persisted in
~/.config/sidekick/knowledge-notes/{projectSlug}.json - New commands:
Sidekick: Add Knowledge Note,Edit Knowledge Note,Delete Knowledge Note,Confirm Knowledge Note - Multi-Session Project Timeline: Chronological view of all sessions in the current project
- Session Cards: Each session displayed as a card with label, relative time, duration, and message count
- Duration Bars: Visual bar proportional to session length relative to the longest session
- Metadata Badges: Token count, task count, error count, and model name shown as color-coded badges
- Time Range Filtering: Toggle between 24h, 7d, 30d, and All ranges
- Expandable Details: Click a session card to load and display tool usage breakdown, task list, and error summaries
- Open in Dashboard: Click the open button on any session to load it in the Session Analytics dashboard
- Auto-Refresh: Timeline updates on session start/end and debounced (10s) on token usage events
- Registered as "Project Timeline" webview in the Session Monitor sidebar
[0.10.3] - 2026-02-19¶
Added¶
- Mind Map Circular Layout: Toggle between the organic force-directed layout and a clean static circular layout
- New "Circular" button in the mind map header to switch layout modes
- Session node centered with peripheral nodes arranged on a circle, grouped by type and sorted alphabetically
- Curved bezier links between peripheral nodes, straight radial spokes from session to peripherals
- Smooth 600ms animated transitions when toggling between layouts
- Drag disabled in circular mode; zoom and pan still work
- "Reset Layout" recalculates circular positions when in circular mode
- New data arriving in circular mode snaps to recalculated positions
- Window resize recalculates layout in both modes
[0.10.2] - 2026-02-19¶
Fixed¶
- Notification replay on session load: Notification triggers (destructive command, credential access, compaction, token threshold) no longer fire for historical events when a session is first loaded — only live events trigger notifications
- SubagentScanner log spam: "Directory does not exist" message now logs once per path instead of every 2-second poll cycle
[0.10.1] - 2026-02-19¶
Fixed¶
- Fixed broken image references in Marketplace README (old asset filenames replaced with current ones)
- Updated Marketplace keywords to reflect multi-provider rebrand
[0.10.0] - 2026-02-18¶
Added¶
- Multi-Provider Inference: Support for OpenCode and Codex CLI as inference providers alongside Claude Max and Claude API
- New
sidekick.inferenceProvidersetting with auto-detection based on installed CLI agents - Provider auto-detection picks the most recently active agent via filesystem timestamps
- "Switch Inference Provider" command and status bar quick-pick
- Multi-Provider Session Monitoring: Monitor sessions from OpenCode (
~/.local/share/opencode/) and Codex CLI (~/.codex/sessions/) - New
sidekick.sessionProvidersetting with auto-detection - Each provider normalizes raw data into a common
ClaudeSessionEventformat - Model Resolver with Tier System: Unified model selection via tiers (fast/balanced/powerful) with auto-detection per feature
"auto"resolves to a per-feature default tier (e.g., inline completions → fast, transforms → powerful)- Legacy names (haiku/sonnet/opus) map through
LEGACY_TIER_MAP - Tiers map to provider-specific model IDs via
DEFAULT_MODEL_MAPPINGS - Session Handoff System: Provider-aware context handoff documents for seamless session continuation
- Configurable via
sidekick.autoHandoffsetting: off, generate-only, generate-and-notify - Targets the correct instruction file per provider (CLAUDE.md, AGENTS.md, etc.)
- Stored in
~/.config/sidekick/handoffs/ - Cross-Session Task Persistence: Tasks from Kanban board persist across sessions in
~/.config/sidekick/tasks/{projectSlug}.json - Decision Log Extraction: Tracks and persists architectural decisions from sessions in
~/.config/sidekick/decisions/{projectSlug}.json - Event Logging Audit Trail: Optional JSONL event logging for debugging
- New settings:
sidekick.enableEventLog,sidekick.eventLogMaxSizeMB,sidekick.eventLogMaxAgeDays - Stored in
~/.config/sidekick/event-logs/ - Plan Visualization: Step nodes with status indicators in mind map view
- Documentation Site: Material for MkDocs documentation with GitHub Pages deployment
Changed¶
- Rebranded from "Sidekick for Max" to "Sidekick Agent Hub"
- Removed RSVP Speed Reader feature
- Deprecated
sidekick.authModein favor ofsidekick.inferenceProvider(auto-migration on first activation)
Fixed¶
- Codex CLI: replaced
@openai/codex-sdkwith direct CLI spawning for reliable inference - Multiple provider parity fixes for OpenCode and Codex CLI
[0.9.1] - 2026-02-15¶
Added¶
- Subagent Cards on Kanban Board: Spawned subagents (via the
Tasktool) now appear as cards on the Kanban board - Each subagent spawn creates an "In Progress" card with the agent's description as the title
- Cards show agent type chip (e.g. "Explore", "Plan", "Bash") with cyan accent
- Cards move to "Completed" when the subagent finishes (or are removed on failure)
- Visually distinguished from regular tasks with a cyan left border
- Header summary shows separate counts (e.g. "3 tasks, 2 agents")
Fixed¶
- Kanban board refresh on subagent completion: Board now updates immediately when a subagent finishes instead of waiting for the next tool call
[0.9.0] - 2026-02-14¶
Added¶
- Context Token Attribution: Stacked bar chart in the dashboard showing where your context window budget goes
- Classifies tokens into 7 categories: System Prompt, CLAUDE.md, User Messages, Assistant Responses, Tool Inputs, Tool Outputs, Thinking
- Helps identify what's consuming context (e.g., large tool outputs, verbose CLAUDE.md)
- Updates in real-time as the session progresses
- Notification Triggers: Configurable alerts for concerning Claude Code activity
- Built-in triggers:
.env/credential file access, destructive commands (rm -rf,git push --force), tool error bursts, context compaction - Token threshold alerts when cumulative usage exceeds a configurable limit
- Fires VS Code notifications so you can monitor autonomous sessions
- New settings:
sidekick.notifications.enabled,sidekick.notifications.triggers.*,sidekick.notifications.tokenThreshold - Compaction Detection: Context compaction events (
summarytype) are now processed and visualized - Shows compaction markers in the activity timeline
- Tracks context size deltas so you know how much was lost
- Timeline Search & Filtering: Full-text search within the activity timeline
- Search input with instant client-side filtering across all events
- Timeline cap removed during search so all events are searchable
- Filter toggles for message noise classification (system reminders, sidechain detection)
- Conversation Viewer: Full editor tab showing the complete session conversation
- Chat-style rendering with user (blue), assistant (green), tool (collapsible), and compaction chunks
- Built-in search for finding content within the conversation
- New command:
Sidekick: View Session Conversation - Cross-Session Search: Search across all Claude Code sessions in
~/.claude/projects/ - VS Code QuickPick interface with debounced search and context snippets
- Icons per event type (user, assistant, tool_use)
- Click results to open the session file
- New command:
Sidekick: Search Across Sessions - Rich Tool Call Inspector: Full editor tab with specialized tool call rendering
- Read: file path with range info
- Edit: inline diff-style display (red deletions, green additions)
- Bash: formatted command with description
- Grep/Glob: search parameters
- Filter buttons by tool type, expandable detail panels
- New command:
Sidekick: Open Tool Inspector
Improved¶
- Message Noise Classification: Timeline now respects the
isSidechainflag and filters system metadata - Heuristic detection for system reminders, permission checks, and noise events
- Filter toggles in the dashboard to show/hide noise
- Enhanced Subagent Visualization: Subagent tree now shows richer metrics
- Per-agent token usage (input + output) with "42K tok" display
- Duration tracking ("1m 23s")
- Parallel execution detection (agents with overlapping timestamps shown with layers icon)
- Stats enriched from
SubagentFileScannertoken extraction - Tool Analytics Drill-Down: Clicking a tool analytics row now shows individual tool calls with timing and metadata
[0.8.5] - 2026-02-14¶
Fixed¶
- Accurate cost estimation: Session costs now use actual per-model input/output/cache token breakdown instead of a 50/50 approximation — affects Dashboard, Session Summary, and historical exports
- Toggle command persistence:
Sidekick: Togglenow updates thesidekick.enabledconfig so the inline completion provider respects the toggle state - XSS hardening in RSVP reader: Replaced
innerHTMLwith DOM API in the word display to prevent injection from user-selected text - Session re-initialization:
Stop Monitoringnow passesworkspaceStatewhen re-creating the SessionMonitor, preserving custom session path persistence - Overly broad completion filter: The
howeverconversational pattern no longer rejects valid code completions containing the word "however" mid-line — now only matches conversational "However," at the start of a line - COLUMN_ORDER mismatch: Removed stale
'deleted'column from the Task Board inline script that never received data from the extension - SVG in binary filter: Removed
.svgfromBINARY_EXTENSIONSin the diff filter — SVG is text-based XML and should be included in diffs - JSDoc default mismatch: Corrected
truncateDiffIntelligentlydocs from "defaults to 3500" to the actual default of 8000 - Timer leak on dispose: Dashboard now clears
_richerPanelTimertimeout on dispose
Improved¶
- Shared utilities extraction: Consolidated 6 duplicate
getNonce()implementations, 2 duplicateextractTaskIdFromResult()implementations, and scattered markdown fence-stripping regexes into shared modules (utils/nonce.ts,utils/taskHelpers.ts,utils/markdownUtils.ts) - Type safety: Replaced
(block as any)casts with a properisTypedBlock()type guard in SessionMonitor; typedhandleTokenUsageparameter in MonitorStatusBar; resolvedWebviewMessagename collision by renaming toDashboardWebviewMessageandRsvpWebviewMessage - Dead code removal: Removed always-true ternary in TaskBoard, unused
_pendingMode/_pendingComplexityfields in RsvpViewProvider, and identicalif (language === 'python')branch in DocumentationService - Dependency direction: Moved analysis types (
AnalyzedError,ToolPattern, etc.) fromservices/SessionAnalyzertotypes/analysis.tsso utility modules no longer import from services - Event deduplication:
seenHashespruning now retains 75% of entries (was 50%) to reduce re-processing window during high-throughput sessions - Polling guard: TempFilesTreeProvider 2-second subagent scan now skips when no session is active
[0.8.4] - 2026-02-14¶
Improved¶
- Collapsible Session Navigator: The Sessions panel in the dashboard sidebar is now collapsible
- Click the header to expand/collapse the session list
- Expanded by default; chevron rotates to indicate state
- Pin, Refresh, and Browse buttons remain independently clickable
[0.8.3] - 2026-02-10¶
Improved¶
- Dashboard UX polish: Improved layout and feedback for the Session Summary and Session tabs
- Moved "Generate AI Narrative" button to top of Summary tab, immediately after the metrics row, so it's visible without scrolling
- Added progress notification with time estimate when generating narratives (VS Code notification + inline spinner with "~15-30s" message)
- Reorganized Session tab from one monolithic "Session Details" section into three thematic groups:
- Session Activity — Activity Timeline, File Changes, Errors
- Performance & Cost — Model Breakdown, Tool Analytics, Tool Efficiency, Cache Effectiveness, Advanced Burn Rate
- Tasks & Recovery — Task Performance, Recovery Patterns
- Promoted richer panels (Task Performance, Cache, Recovery, etc.) from nested collapsibles to always-visible sections within their group — one click to expand, no double-expand needed
[0.8.2] - 2026-02-07¶
Added¶
- Kanban Board: TaskCreate/TaskUpdate activity now appears in a dedicated Kanban view
- Groups tasks by status with real-time updates
- Collapsible columns with hidden-task summaries
[0.8.1] - 2026-02-07¶
Fixed¶
- Mind map layout recovery for dense subagent graphs (#8)
- Added a Reset Layout control to rebuild the D3 simulation and recenter on the main session node without refreshing the view
- Tuned force behavior to keep clusters compact and readable (localized many-body repulsion, adaptive link distance/collision spacing, gentle x/y centering)
[0.8.0] - 2026-02-04¶
Added¶
- CLAUDE.md Suggestions: AI-powered session analysis for optimizing Claude Code usage
- Analyzes session patterns to detect recovery strategies (when Claude gets stuck and how it recovers)
- Generates best practices and suggestions for your CLAUDE.md file
- Progress UI with collapsible suggestion panels in the dashboard
- Helps you learn from your own Claude Code sessions
Changed¶
- Refactored prompts to use XML tags for better AI instruction structure
[0.7.10] - 2026-02-03¶
Added¶
- Historical Analytics: Retroactive data import from existing Claude Code sessions
- Import token usage, costs, and tool statistics from completed sessions
- Enables trend analysis across multiple sessions
- Response Latency Tracking: Real-time latency metrics in dashboard
- Track request-to-response timing for Claude API calls
- Visualize latency trends over the session
- Task Nodes in Mind Map: Task tool calls visualized as distinct nodes
- Spawned Task agents appear as nodes with their descriptions
- Shows task type and status in the mind map
- Dashboard UX: Improved metric button layout and sizing
- Better visual hierarchy for metric controls
- More consistent button sizing across the dashboard
[0.7.9] - 2026-02-02¶
Fixed¶
- Custom folder session auto-discovery: Fixed automatic detection of new sessions (e.g., after
/clean) when monitoring a custom folder performNewSessionCheck()now respects the custom session directory instead of always using the workspace path
[0.7.8] - 2026-02-02¶
Added¶
- Mind Map: Directory & Command Nodes: Grep/Glob and Bash tool calls now show their targets in the mind map
- Directory nodes (brown) show paths searched by Grep/Glob tools
- Command nodes (red) show command types executed by Bash (git, npm, docker, etc.)
- Tooltips display detailed context:
- Directory nodes show search patterns used (e.g.,
*.ts,TODO) - Command nodes show actual commands executed (e.g.,
npm install,git status)
- Directory nodes show search patterns used (e.g.,
- Node sizes scale with usage frequency
- Mind Map: Auto-Focus on Activity: Mind map automatically pans to show new activity
- Focuses on newly added nodes or the latest tool-to-file/URL connection
- Preserves user's zoom level while adjusting pan position
- Smooth easing animation for comfortable viewing
Fixed¶
- Custom folder new session detection: Browsing to a custom folder now properly detects new sessions when Claude Code starts
- Previously, discovery polling used the workspace path instead of the custom directory
- Now correctly watches and polls the custom directory for new sessions
- Entering discovery mode (waiting for session) works correctly with custom paths
- Folder picker prioritization: The "Browse Session Folders" list now prioritizes the current VS Code workspace
- Exact workspace match appears first
- Subdirectories of the workspace appear next
- Other folders sorted by most recent activity
- Session dropdown custom folder: Session dropdown now correctly shows sessions from the selected custom folder instead of the workspace folder
[0.7.7] - 2026-02-02¶
Added¶
- Browse Session Folders: Manually select any Claude project folder to monitor, regardless of workspace path
- New "Browse..." button in the Session Analytics dashboard next to the session dropdown
- Command palette: "Sidekick: Browse Session Folders..." to browse all Claude project folders in
~/.claude/projects/ - Shows decoded human-readable paths, session counts, and last activity time
- Selection persists across VS Code restarts (stored per-workspace)
- Custom path indicator shows when using a manually selected folder
- "Reset to Auto-Detect Session" command to clear custom selection and revert to workspace-based discovery
- Useful when Claude Code is running in a subdirectory or different path than your VS Code workspace
- Token Usage Tooltips: Hover over token metrics to see quota projections and estimated time to exhaustion
- Activity Timeline Enhancements: Claude's text responses now visible in the activity timeline alongside tool calls
- Mind Map Subagent Visibility: Spawned Task agents now appear as distinct nodes in the mind map visualization
- Dynamic Node Sizing: Mind map nodes scale based on content length for better visual hierarchy
- Latest Link Highlighting: Most recent connections in the mind map are visually emphasized
- Line Change Statistics: Files Touched tree view and mind map now show +/- line change counts
Fixed¶
- Git Repository Detection: Improved detection for nested git repositories
[0.7.6] - 2026-01-31¶
Added¶
- Subscription Quota Display: View Claude Max subscription usage limits directly in the Session Analytics dashboard
- Two semi-circular gauges showing 5-hour and 7-day quota utilization
- Color-coded thresholds: green (<50%), orange (50-79%), red (≥80%)
- Countdown timers showing when each quota resets (e.g., "Resets in 2h 15m")
- Reads OAuth token from Claude Code CLI credentials (
~/.claude/.credentials.json) - Auto-refreshes every 30 seconds when dashboard is visible
- Gracefully hidden when using API key mode or no OAuth token available
[0.7.5] - 2026-01-30¶
Fixed¶
- Subdirectory session discovery: Session monitoring now finds Claude Code sessions started from subdirectories of the workspace (#7)
- When VS Code workspace is
/projectbut Claude Code starts from/project/packages/app, the extension now correctly discovers and monitors that session - Uses prefix-based matching with most-recently-active selection when multiple subdirectory sessions exist
- Prevents false positives (e.g.,
/projectwon't match/project-v2) - Added
subdirectoryMatchesandselectedSubdirectoryMatchto session diagnostics for debugging
[0.7.4] - 2026-01-30¶
Added¶
- Mind Map URL Nodes: WebFetch and WebSearch calls now appear as clickable nodes in the session mind map
- URLs display as cyan nodes showing the hostname (e.g.,
example.com) - Search queries display truncated query text
- Click URL nodes to open in your default browser
- Click search query nodes to search Google
- File nodes remain clickable to open in VS Code editor
- Visual feedback with pointer cursor and hover brightness effect
[0.7.3] - 2026-01-29¶
Added¶
- Timeout Manager: Centralized, context-aware timeout handling across all AI operations
- Configurable timeouts per operation type (inline completion, transform, commit message, etc.)
- Auto-adjustment based on context/prompt size
- Progress indication with cancellation support
- "Retry with longer timeout" option when requests timeout
- New Settings:
sidekick.timeouts.inlineCompletion: Timeout for inline completions (default: 15s)sidekick.timeouts.transform: Timeout for code transforms (default: 60s)sidekick.timeouts.commitMessage: Timeout for commit message generation (default: 30s)sidekick.timeouts.documentation: Timeout for documentation generation (default: 30s)sidekick.timeouts.explanation: Timeout for code explanations (default: 45s)sidekick.timeouts.errorExplanation: Timeout for error explanations (default: 30s)sidekick.timeouts.inlineChat: Timeout for inline chat (default: 60s)sidekick.timeouts.preCommitReview: Timeout for pre-commit review (default: 60s)sidekick.timeouts.prDescription: Timeout for PR description generation (default: 45s)
Changed¶
- All AI services now use TimeoutManager for consistent timeout behavior
- Added AbortSignal support to completion options for proper request cancellation
[0.7.2] - 2026-01-29¶
Fixed¶
- Session path encoding on Windows/Mac: Fixed issue where session monitoring couldn't find Claude Code sessions on some systems (#6)
- Improved path encoding to handle colons, slashes, and underscores correctly
- Added 3-strategy discovery fallback when computed path doesn't match
- Added session directory to diagnostics command for debugging
[0.7.1] - 2026-01-29¶
Fixed¶
- Silent timeout on inline completions: Completions that timed out would silently fail with no user feedback (#5)
- Now shows a warning notification when requests timeout, with options to open settings or view logs
- Added
TimeoutErrorclass that survives the error chain for proper identification - Other completion errors now also show user-friendly messages
Added¶
- New Setting:
sidekick.inlineTimeout- Configurable timeout for inline completions (default: 15s, was hardcoded 30s) - Increase if you frequently experience timeouts when Claude servers are slow
- Range: 5-120 seconds
Changed¶
- Reduced default inline completion timeout from 30s to 15s for faster feedback when servers are slow
[0.7.0] - 2026-01-29¶
Added¶
- Claude Code Session Monitor: A comprehensive real-time analytics dashboard for monitoring Claude Code sessions
- Session Analytics Dashboard: Track token usage, costs, and session activity in a dedicated sidebar panel
- Real-time token consumption and cost tracking with model-specific pricing
- Context window gauge showing input/output token usage vs. limits
- Session selector dropdown to switch between active and recent sessions
- Activity timeline displaying user prompts, tool calls, errors, and subagent spawns
- Tool analytics with categorization (file operations, search, bash commands, etc.)
- Automatic session discovery when Claude Code starts new sessions
- Mind Map Visualization: Interactive D3.js force-directed graph showing session structure
- Visualizes conversation flow, tool usage, and file relationships
- Interactive nodes for exploring how Claude navigates your codebase
- Real-time updates as the session progresses
- Latest Files Touched: Tree view showing files modified during Claude Code sessions
- Quick access to recently edited files
- Shows file status (created, modified, deleted)
- Subagents Tree: Monitor spawned Task agents during complex operations
- Track subagent status (running, completed, failed)
- View subagent prompts and results
- Status Bar Metrics: Real-time session status in the VS Code status bar
- Shows active session indicator and quick access to dashboard
- New Commands:
Sidekick: Open Session Dashboard- Open the analytics dashboardSidekick: Start Session Monitoring- Begin monitoring Claude Code sessionsSidekick: Stop Session Monitoring- Pause monitoringSidekick: Refresh/Find Session- Discover new sessions
- Activity Bar Integration: New "Session Monitor" icon in the activity bar with all monitoring views
- New Setting:
sidekick.enableSessionMonitoring: Enable/disable Claude Code session monitoring (default: true)
Technical¶
- Added JSONL parser with line buffering for efficient session log parsing
- Added session path resolver for cross-platform Claude Code directory detection
- Added model pricing service with accurate per-token cost calculation
- Added burn rate calculator for token consumption tracking
[0.6.0] - 2026-01-26¶
Added¶
-
Generate Documentation: Automatically generate JSDoc/docstrings for functions, classes, and methods
-
Press
Ctrl+Shift+D(Cmd+Shift+D on Mac) with cursor in a function - Supports all major languages (TypeScript, JavaScript, Python, etc.)
-
Configurable model via
sidekick.docModel(default: haiku) -
Explain Code: Get AI-powered explanations for selected code
-
Press
Ctrl+Shift+E(Cmd+Shift+E on Mac) with code selected - Five complexity levels: ELI5, Curious Amateur, Imposter Syndrome, Senior, PhD Mode
- Rich webview panel with markdown rendering
- Regenerate with custom instructions
-
Configurable model via
sidekick.explainModel(default: sonnet) -
Error Explanations: Understand and fix errors with AI assistance
-
Lightbulb quick action on diagnostics: "Explain Error with AI"
- "Fix Error with AI" command applies suggested fixes directly
- Five complexity levels for explanations
-
Configurable model via
sidekick.errorModel(default: sonnet) -
Quick Ask (Inline Chat): Ask questions about code without leaving the editor
-
Press
Ctrl+I(Cmd+I on Mac) to open quick input - Ask questions or request code changes
- Diff preview for proposed changes with Accept/Reject
- Context-aware: uses selected code or cursor context
-
Configurable model via
sidekick.inlineChatModel(default: sonnet) -
Pre-commit AI Review: Review your changes before committing
-
Click the eye icon in Source Control toolbar
- AI analyzes staged/unstaged changes for issues
- Highlights bugs, security concerns, code smells
- Results shown as inline decorations in editor
-
Configurable model via
sidekick.reviewModel(default: sonnet) -
PR Description Generation: Generate pull request descriptions automatically
-
Click the PR icon in Source Control toolbar
- Analyzes all commits on your branch vs base branch
- Generates summary, change list, and test plan
- Copies to clipboard, ready to paste
-
Configurable model via
sidekick.prDescriptionModel(default: sonnet) -
Context Menu Submenu: All Sidekick commands organized under "Sidekick" submenu
-
Quick Ask, Generate Docs, Explain Code, Explain Error, Fix Error, Transform, RSVP Reader
-
Complexity level submenus for Explain Code and RSVP Reader
-
Completion Hint: Visual indicator suggesting AI completion shortcut
-
Shows hint at cursor after typing stops
- Configurable delay via
sidekick.completionHintDelayMs(default: 1500ms) - Toggle via
sidekick.showCompletionHint(default: true)
Fixed¶
- Claude CLI path resolution: Fixed "Claude Code native binary not found" error when Claude is in PATH but not in common installation directories (#4)
- Now uses
which(Unix) orwhere(Windows) to resolve the absolute path - Better error messages with installation instructions
Changed¶
- Shortened "Explain Code" command title for cleaner context menus
- Bidirectional integration between Explain Code and RSVP Reader (read explanations in RSVP mode)
[0.5.0] - 2025-01-24¶
Added¶
- RSVP Reader: Speed reading with AI-powered explanations for selected text
- Select text and press
Ctrl+Shift+R(Cmd+Shift+R on Mac) to open the RSVP Reader panel - Word-by-word display with ORP (Optimal Recognition Point) highlighting reduces eye movement and increases reading speed
- Adjustable reading speed from 100-900 WPM with real-time controls
- Five AI explanation complexity levels:
- ELI5 - Complete beginner explanations with simple analogies
- Curious Amateur - Learning mode with defined technical terms
- Imposter Syndrome - Fill knowledge gaps, assume basic familiarity (default)
- Senior - High-level summary, skip basics, highlight key details
- PhD Mode - Expert-level analysis without simplification
- Dual content modes: Toggle between original text and AI-generated explanation
- Two reading modes: RSVP (word-by-word) or full-text scrollable view
- Context menu integration: Right-click selected text → "Sidekick: RSVP Reader" submenu
- Rich keyboard controls:
- Space: Play/Pause
- Left/Right arrows: Navigate words
- Up/Down arrows: Adjust speed (±50 WPM)
- R: Restart from beginning
- O: Toggle original/explanation
- F: Toggle full-text mode
- Regenerate explanations with custom instructions
- Intelligent content classification (prose/technical/code) for tailored explanations
- VS Code theme-aware UI with dark/light mode support
- New Settings:
sidekick.rsvpMode: Default reading mode (direct/explain-first)sidekick.explanationComplexity: Default AI explanation levelsidekick.explanationModel: Model for explanations (haiku/sonnet/opus, default: sonnet)
[0.4.0] - 2025-01-21¶
Added¶
- AI Commit Message Generation: Generate commit messages from your staged changes with a single click
- Sparkle button in Source Control toolbar triggers generation
- Analyzes git diff to create contextual commit messages
- Supports Conventional Commits format or simple descriptions (
sidekick.commitMessageStyle) - Configurable model selection (
sidekick.commitMessageModel, defaults to Sonnet) - Default guidance setting for consistent commit style (
sidekick.commitMessageGuidance) - Regenerate with custom guidance (e.g., "focus on the bug fix", "make it shorter")
- Automatically filters out binary files, lockfiles, and generated code from diff analysis
- Intelligent diff truncation at file boundaries for large changesets
- New Settings:
sidekick.commitMessageModel: Model for commit messages (haiku/sonnet/opus, default: sonnet)sidekick.commitMessageStyle: Format style (conventional/simple, default: conventional)sidekick.commitMessageGuidance: Default guidance applied to all commit messagessidekick.showCommitButton: Toggle visibility of the commit message button
[0.3.2] - 2025-01-21¶
Added¶
- Custom Claude CLI path setting (
sidekick.claudePath): Specify a custom path to the Claude CLI executable for non-standard installations (pnpm, yarn, volta, etc.) - Auto-detection of common CLI paths: Extension now checks common installation locations (pnpm, yarn, volta, npm global, Homebrew) before falling back to PATH
Fixed¶
- Fixed "Claude Code CLI not found" error for users who installed Claude CLI via pnpm, yarn, or other package managers (#3)
- Improved error message with instructions for setting custom CLI path
[0.3.1] - 2025-01-21¶
Added¶
- Demo GIFs in README for better feature visibility
- Social media preview image
Fixed¶
- Minor documentation improvements
[0.3.0] - 2025-01-21¶
Added¶
- Status Bar Menu: Click the status bar to access all extension options
- Enable/Disable completions
- Configure Extension settings
- View Logs
- Test Connection
- Set API Key
- View Logs command: Debug completion issues with the new output channel
- Test Connection command: Verify API connectivity before troubleshooting
- Prose file support: Markdown, plaintext, HTML, XML, LaTeX files now automatically use multiline mode with higher character limits
- Model display: Status bar now shows the current inline model (e.g., "Sidekick haiku")
Changed¶
- Debounce default: Increased from 300ms to 1000ms for less aggressive completions
- Improved prompts: Better prompt engineering to reduce meta-responses and improve completion quality
- Character limits: Prose files allow up to 2000 chars (single-line) / 3000 chars (multiline); code files allow 500/800 chars
Fixed¶
- Reduced "I'll complete this..." and other meta-commentary in completions
- Better handling of code fence removal in responses
- Improved truncation logic for long responses (truncates at logical boundaries)
[0.2.0] - 2025-01-10¶
Added¶
- Code Transform feature: Select code and press
Ctrl+Shift+M/Cmd+Shift+Mto transform it - Independent model selection for inline completions and transforms
- Transform uses Opus by default for highest quality
- Context lines configuration for transforms (
sidekick.transformContextLines) - API key authentication mode as alternative to Max subscription
Changed¶
- Rebranded from "Claude Code Max" to "Sidekick for Max"
- Inline completions use Haiku by default (fastest)
- Transforms use Opus by default (highest quality)
[0.1.0] - 2025-01-09¶
Added¶
- Initial release
- Inline code completions with ghost text
- Accept completions with Tab, dismiss with Escape
- Manual trigger:
Ctrl+Shift+Space/Cmd+Shift+Space - Toggle completions via status bar
- Support for Haiku, Sonnet, and Opus models
- Debounced completion requests
- Request cancellation for stale completions
- In-memory LRU cache for repeated contexts
- Claude Max subscription integration via Claude Code CLI