Changelog
[Unreleased]
[0.9.57] - 2026-11-10
Fixed
- Subagent example extension reported failed runs and chain steps as successes because it returned
isErrorfromexecute; it now marks them via atool_resulthandler sorenderResultkeeps its details
Changed
- Kimi K3.1 Pro is the new default for
fireworksandtogether, replacing Kimi K3: $2/$10 per million tokens against $3/$15, same 1M context. SetdefaultModelto keep Kimi K3
[0.9.56] - 2026-11-01
Fixed
- Elyra crashed with "Rendered line exceeds terminal width" when the approval dialog of
skill_write,extension_write, ordecision_recordshowed a description or title longer than the terminal is wide. Long text now wraps, and every dialog line is truncated to the terminal width
Changed
- Kimi K3.1 Pro is the new default for
moonshotai,moonshotai-cn, andopencode-go, replacing Kimi K3: $2/$10 per million tokens against $3/$15, same 1M context. OpenRouter keeps Kimi K3, which is cheaper there on input. SetdefaultModelto keep Kimi K3
[0.9.55] - 2026-10-21
Fixed
--mode jsonnow exits with code 1 and writes the error to stderr when the final request fails or is aborted, like text mode. It exited 0, so callers that check the exit code read a failed run as a success--session <id>for a session that belongs to another directory now fails with exit code 1 and a hint to use--forkin print, json, and rpc mode. It asked "Fork this session into current directory?" on stdin, so a prompt piped on stdin was read as the answer, and the run exited 0 without producing any output
Changed
docs/json.mdlists every event type the stream emits and explains how to read a run: session id, tool calls, the final answer, failure, and cost
[0.9.54] - 2026-10-14
Added
/handoff <goal>starts a new session for the next task. The model writes a self-contained first prompt with only the context that goal needs and puts it in the editor for review; the new session records the old one as its parent. Previously only available as an example extension- Commits made by the agent now carry an
Elyra-Session:trailer with the session id, soelyra --session <id>leads fromgit logback to the conversation. Disable withgitSessionTrailer: false; skipped for--no-session tool_callhandlers can return{ result: { content, details?, isError? } }to answer a tool call without running the tool (cache hits, dry runs, policy answers). The first handler that blocks or synthesizes winselyra completions <bash|zsh|fish>prints a shell completion script for subcommands, flags, and flag valuesoracletool, active by default: the agent asks a second model with high reasoning for a second opinion when stuck, before risky changes, or when you ask. The model isoracle.modelif set, else the smart routing powerful tier, else the closest model from another provider. Disable withoracle.enabled: falsefind_sessionsandread_sessiontools, active by default: the agent searches earlier sessions and extracts what the current task needs from one, instead of asking you to repeat it. Type@@in the editor to search sessions and insert a@session:<id>mention- Tools that call a model can report it as
details.modelUsage; that cost is now included in/cost, the footer,/goal --budget, and theElyra-Costtrailer
Changed
- The default active tool set is now
read,bash,edit,write,skill_write,extension_write,decision_record(unlessdecisionLogisoff),oracle,find_sessions,read_session. The added tools change the tool list sent to the provider once, so the first request after upgrading misses the prompt cache skill_write,extension_write, anddecision_recordno longer save without approval when there is no interactive UI (-p,--mode mcp). They report that approval is needed and which setting allows it (autoSkills,autoExtensions,decisionLog: "auto")
Fixed
skill_write,extension_write, anddecision_recordwere registered but never active, so the agent could not use them. They are now in the default tool set
[0.9.53] - 2026-10-13
Changed
- Gemini 4 Argon is the new Google default (
gemini-4-argon, released 2026-10-13) forgoogleandgoogle-vertex, replacinggemini-3.1-pro-preview. $2/$10 per million tokens against $2/$12, cache read $0.10 against $0.20, same 1M context, and not marked as a preview. On the Gemini API it allows 32,768 output tokens per response versus 65,536 for 3.1 Pro Preview; Vertex allows 65,536. SetdefaultModelto keep Gemini 3.1 Pro Preview
Fixed
- Smart routing now recognises Vercel AI Gateway's
-batchmodel variants as well as OpenRouter's:batch. Without this, the half-price-batchmodels that Vercel AI Gateway just added would have been eligible for ordinary interactive routing, so a cheap-tier turn could land on a slow batch model, andgoalBatchModelseconomy mode would never have found them goalBatchModelseconomy mode no longer swaps to a batch variant that costs more than the model it replaces. OpenRouter prices some base models at a cheap upstream and their:batchvariant at another, somoonshotai/kimi-k3:batchwas $2.28/M input against $0.73/M for the base, andz-ai/glm-5.3:batchwas cheaper on output but 5.7x pricier on input. The swap now requires the batch variant to be no pricier on any price component and cheaper on at least one; five OpenRouter models are affected today (Kimi K3, GLM 5.3, GLM 5.3 Flash, DeepSeek V4.1 Flash, gpt-oss-20b), and the other 121 batch swaps are unchanged
[0.9.52] - 2026-10-10
Fixed
- The release workflow builds and signs all binaries again. The 0.9.51 build failed and published no binaries: rcodesign could sign the arm64 macOS binary but crashed on the x64 one, which carries the bun runtime's stale hardened-runtime signature. The workflow now strips that signature with ldid before signing with rcodesign, which gives both macOS binaries a valid ad-hoc signature
[0.9.51] - 2026-10-10
Fixed
- macOS standalone binaries start again.
bun build --compileappends the application to a linker-signed Mach-O, which invalidates its ad-hoc signature, so macOS killed the binary on launch (exit 137). The release workflow now re-signs the darwin binaries ad hoc with rcodesign. To use a 0.9.50 macOS binary, runcodesign --force --sign - elyraonce
[0.9.50] - 2026-10-10
Fixed
- Standalone binaries build again. Since 0.9.44 the release workflow failed because Bun could not resolve
@opentelemetry/api, an optional peer the Mistral SDK loads through a guarded dynamic import. The binary build now installs it for bundling only; Mistral tracing stays off unlessMISTRAL_SDK_TELEMETRYis set, as in npm installs
[0.9.49] - 2026-10-10
Changed
- Faster startup: importing Elyra now loads about 420 fewer modules (1583 to 1162) and 2.9 MB less source.
elyra --mode mcpimplements the small part of the MCP protocol it needs (initialize, ping, tools/list, tools/call, cancellation, progress) instead of importing the MCP SDK, which pulled zod, ajv, and their schemas into every startup. Code blocks are highlighted with highlight.js's common language set (about 37 grammars, including TypeScript, PHP, Python, Rust, Go, SQL, YAML, shell, diff, and Dockerfile) instead of cli-highlight, which loaded all 190+ grammars and an HTML parser. Languages outside that set render as plain code blocks - The bundled MCP client loads the MCP SDK only when an MCP server is actually used
- Extensions load faster. TypeScript extensions conventionally import siblings as
./x.js; jiti resolved each of those by trying hundreds of path combinations before falling back to./x.ts(about 1 ms per import). The loader now points such imports at the existing.tsfile before transpiling. Transpiled extensions are cached in~/.elyra/agent/cache/jiti-v1, so the first start after upgrading rebuilds the cache once npm root -g(a 60 ms synchronous subprocess on every startup with npm packages) is cached in~/.elyra/agent/cache/npm-global-root.json. The cache is keyed on the npm command, the Node binary, the npm prefix, and~/.npmrc, so switching Node versions or npm config invalidates it, and a configured package missing under the cached root triggers a fresh lookup- Overall, a startup with configured MCP servers and 23 installed packages went from about 465 ms and 200 MB to about 315 ms and 180 MB
Added
ELYRA_TIMING=1now also prints a per-extension breakdown (import, factory,session_start) sorted by cost, to find slow extensions
[0.9.48] - 2026-10-08
Changed
- GPT-6.1 Sol is the new OpenAI default (
gpt-6.1-sol) foropenai,azure-openai-responses, andgithub-copilot, replacing GPT-6 Sol. Same $2/$10 price and 1M context, with the cache-read price halved to $0.10, so long cached sessions get cheaper.openai-codexstays ongpt-5.5. SetdefaultModelto keep GPT-6 Sol - Smart routing's fast tier is now pinned to Claude Haiku 5.5 (
anthropic/claude-haiku-5-5; $0.10/$0.50, cache read $0.01, 1M context), alongside the existing Opus 5.5 pin for the powerful tier. Like every pin, it only applies when Anthropic is configured; otherwise the tier falls back to cost-based ranking. With Anthropic configured, fast-tier turns in a session started on another provider now route to Haiku, as powerful-tier turns already route to Opus. Override withsmartRoutingModels.fast
Fixed
- Cloudflare AI Gateway default model corrected from
claude-opus-5-5toclaude-opus-5.5. That catalogue uses dotted IDs, so since 0.9.42 the default pointed at a model that does not exist there and new Cloudflare AI Gateway sessions had no valid default. Every provider default and smart-routing pin is now tested against the generated model registry, so a retired or misspelled default fails the test suite instead of reaching users
[0.9.47] - 2026-10-03
Changed
- Refreshed the model registry
Fixed
- MCP:
directToolsservers have their tools from the first request of a session. Without a cached tool list, session start now fetches it (waiting up to three seconds) instead of registering the tools deferred in the background, so the agent no longer has to reach them throughmcp_searchandmcp_callfirst. Tools that arrive later are still registered withdefer. See docs/mcp.md - MCP: the tool-list cache key uses header and
envvalues as written, so a token passed in through${VAR}that changes every run no longer empties the cache. Elyra Workspace relies on this for its per-session agent gateway token, so Elyra threads keep the gateway'smcp__elyra__tools from one session to the next
[0.9.46] - 2026-10-03
Added
ELYRA_MCP_SERVERSenvironment variable: MCP servers for one Elyra process, as.mcp.json-style JSON. Apps that start Elyra hand over their own server this way without writing to the user's configuration files; Elyra Workspace uses it to give Elyra threads its agent gateway (thread management and the in-app browser). It is read in every project, trusted or not, since whoever sets it already controls the process. See docs/mcp.md
Changed
- Refreshed the model registry
Fixed
- Together: DeepSeek V4 Pro keeps its reasoning levels now that Together only lists the dated
deepseek-ai/DeepSeek-V4-Pro-0813; the undated alias is gone from the registry
[0.9.45] - 2026-09-30
Added
- Project trust. A cloned repository can no longer make Elyra run code just by being opened. Project packages (
packagesin.elyra/settings.json, which are npm/git-installed on startup), project extensions (.elyra/extensions/andextensionsin project settings), MCP server definitions (.mcp.json,.elyra/mcp.json,.cursor/mcp.json,.vscode/mcp.json), and the project settingsshellPath,shellCommandPrefix,npmCommand,autoExtensions, andautoSkillsnow only take effect once the project directory is trusted. On first start in such a project, interactive mode lists exactly what would run and offers: trust this folder, trust the parent folder (covers every project below it), trust for this session only, or continue without project code. Untrusted projects still work; the gated items are skipped with a warning. AGENTS.md, skills, prompt templates, and themes are not gated. Projects without executable configuration never prompt /trustcommand: review what the project loads, trust it and reload in place,/trust revoke, or/trust listelyra trust [path],elyra trust --status,elyra trust --list, andelyra trust --revoke [path]manage trusted directories from the shell. Trust is stored in~/.elyra/agent/trusted-projects.json--trust-projectflag andELYRA_TRUST_PROJECT=1trust the project for one run, for scripts and CI where no prompt can be shown. Print, JSON, RPC, and MCP server modes never prompt: untrusted projects run without their gated configurationctx.isProjectTrusted()on the extension context, so extensions that execute project-supplied configuration (MCP servers, workflow commands) can refuse while the project is untrusted- SDK:
createAgentSessionServices({ resolveProjectTrust })applies a trust decision before any resource loads;SettingsManager.setProjectTrusted(),isProjectTrusted(), andgetTrustedProjectSettings(). Without a resolver the SDK keeps trusting the project, as before - MCP out of the box: the
@elyracode/mcppackage is now bundled and loaded by default. It uses the MCP servers already configured for Claude Code (~/.claude.json,.mcp.json), Cursor, VS Code, or Elyra, through two stable tools (mcp_search,mcp_call) instead of every server's schemas, and adds/mcp(status, login, logout, refresh, enable, disable, reload). Project MCP files load only in trusted projects. With no servers configured it registers nothing. Disable with the newmcpsetting ("mcp": false);--no-extensionsalso skips it, and a user-installed@elyracode/mcptakes precedence. See docs/mcp.md elyra --mode mcpserves Elyra as an MCP server over stdio, for Claude Desktop, Cursor, and other hosts. Tools:elyra_task(runs the agent on a task in a fresh persisted session; read-only by default,mode: "edit"to allow edits and commands; returns the answer, changed files, cost, and a session id),elyra_review(reviews uncommitted changes, by default with a model from another vendor), andelyra_decisions(lists recorded architecture decisions). Tasks run one at a time and report tool activity as MCP progress notifications- Extension credentials:
elyra.credentials(namespace)stores JSON credentials for services other than model providers in~/.elyra/agent/extension-credentials.json(0600, cross-process locking), withupdate()for locked read-modify-write andgetFreshOAuthTokens()to refresh expiring OAuth tokens exactly once across concurrent Elyra processes. Also exported asopenExtensionCredentialStore() elyra.openBrowser(url)opens an http(s) URL without a shell and reports whether a browser started. Also exported asopenBrowser()- Cache-friendly dynamic tools:
elyra.registerTool(tool, { defer: true })holds a tool registered mid-session back while the prompt cache is warm and activates it at the next cache boundary (model switch, reload, new session, or an expired cache);elyra.unregisterTool(name)removes a tool, keeping its definition in the request (calls refused) until that boundary so the cached prefix survives;elyra.getPendingToolChanges()andelyra.applyPendingToolChanges()inspect and force pending changes - Child agent context:
ctx.getChildAgentEnv()returns environment variables for spawning a child Elyra process that inherits the session's project trust and values shared withelyra.shareWithChildAgents(key, value); children read them withelyra.getParentAgentContext(). The child strips the variable from its own environment at startup so commands the agent runs do not inherit it elyra.exec()andexecCommand()accept anenvoption, merged overprocess.env
Changed
- The tools block sent to the provider now keeps the order in which tools were first sent. New tools are appended instead of being slotted into registry order, so adding a tool never reorders the tools already cached
/reviewshares its diff collection, reviewer choice, and review call with the MCP server'selyra_review(newcore/code-review.ts). A reviewer request that ends in a provider error is now reported as "Review failed" instead of "The reviewer returned no findings"elyra install -ltrusts the current project, since adding a project package is an explicit trust decision.elyra update,elyra list, andelyra configignore project packages in untrusted projects and say soextension_writewithscope: "project"in an untrusted project tells the agent the extension will not load until the user runs/trust
Fixed
- Together default model moved from
moonshotai/Kimi-K2.6, which Together retired, tomoonshotai/Kimi-K3. Without this, new Together sessions had no valid default model
[0.9.44] - 2026-09-28
Fixed
- Fireworks default model moved from
accounts/fireworks/models/kimi-k2p6, which Fireworks retired, toaccounts/fireworks/models/kimi-k3. Without this,elyra doctorflagged the default as missing and new Fireworks sessions had no valid model
[0.9.43] - 2026-09-24
Changed
- GPT-6 Sol is the new OpenAI default (
gpt-6-sol, released 2026-09-22) foropenai,azure-openai-responses, andgithub-copilot, replacing GPT-5.6. Same 1M context and reasoning at half the price ($2/$10 vs $4/$20, cache read $0.20 vs $0.40).openai-codexstays ongpt-5.5because Codex does not expose GPT-6 yet. SetdefaultModelto keep GPT-5.6; existing sessions are unaffected
[0.9.42] - 2026-09-22
Changed
- Claude Opus 5.5 is the new Anthropic default (
claude-opus-5-5, also on Bedrock asus.anthropic.claude-opus-5-5and Cloudflare AI Gateway), replacing Claude Sonnet 5. The smart-routingpowerfultier is pinned to it as well. Opus 5.5 is $4/$20 per M tokens against Sonnet 5's $2/$10 (cache reads are $0.20 on both, and it undercuts Opus 5's $5/$25), so expect up to double the cost per turn on the default and powerful tiers, less on cache-heavy sessions; pinsmartRoutingModels.powerfulor setdefaultModelto keep Sonnet 5. Existing sessions and explicitdefaultModelsettings are unaffected
[0.9.41] - 2026-09-20
Added
- Anthropic prompt-cache warming. After a turn ends, Elyra waits four minutes and replays the exact request prefix (system prompt, tools, history, thinking settings) with a one-character user message and
max_tokens: 1, refreshing the five-minute cache TTL for one cache-read price instead of paying a full rewrite when you return. Up to two pings per idle period, only foranthropic-messagesmodels with an API key (not subscription OAuth), only when the last request was at least 20k tokens, and cancelled the moment you prompt, switch models, or abort. Pings never enter the conversation or session file;/sessionreports their count and cost separately. Configure or disable with thecacheWarmingsetting - Mid-conversation system messages.
/system <text>inserts an instruction into the history at the current point; it is persisted, replayed on resume, summarized by compaction, and applies to every following turn. Extensions get the same viaelyra.sendSystemMessage(text, { display?, deliverAs?, triggerTurn? }). No provider offers a portable mid-stream system role, so the message reaches the model as a user message wrapped in<system-reminder>tags, and the default system prompt tells the model to treat that wrapper as harness instructions. Appending at the end of history keeps the prompt cache intact, unlike rewriting the system prompt per turn /bug <description>: builds a bug report with Elyra version, runtime, OS, active model and thinking level, session message counts, recent tool calls, loaded extensions and their load errors, and the last error if the previous turn failed. Shows a preview, then opens a prefilled GitHub issue in the browser or copies the report to the clipboard (also saved to a temp file). API keys, tokens, JWTs, and the home directory are redacted; nothing is sent until you submit on GitHub
Changed
- Toggling tools mid-session no longer invalidates the prompt cache. Deactivated tools stay in the request and the system prompt (the tools block is the root of Anthropic's cache hierarchy and part of OpenAI's hashed prefix); the agent blocks calls to them with a clear error result instead. Activating a tool that was never sent still adds it, costing one cache miss as before. Startup restrictions (
--tools,--no-tools) are unchanged. NewstableToolSetsetting (defaulttrue); set tofalsefor the old send-only-active-tools behaviour - Faster
--resumeand--continuestartup. Session listing now keeps anindex.jsonsidecar per sessions directory and only re-parses files whose mtime or size changed; corrupt or missing indexes are rebuilt.SessionInfo.allMessagesTextis loaded lazily on first access (i.e. when searching in the session picker) instead of concatenating every session's text at startup.--continuevalidates candidate files newest-first and stops at the first valid one, and the chosen file is parsed once instead of twice.SessionManager.buildSessionContext()caches its result until entries or the leaf change.
[0.9.40] - 2026-09-18
Added
@elyracode/jev-toolscan now call TypeSafe directly (https://api.typesafe.ai/v1/systemone, modeljev-latest) withTYPESAFE_API_KEY, in addition to the OpenRouter route. Direct is preferred when its key is present;JEV_BACKEND=typesafe|openrouterforces one./jevshows the active backend and both key states
[0.9.39] - 2026-09-18
Added
- Jev decision tools extension (
@elyracode/jev-tools): adecidetool that sends astateplus typed questions (noulyes/no,choice,score) to TypeSafe Jev through OpenRouter's decisions endpoint and returns calibrated probabilities instead of prose. Reuses the stored OpenRouter key;/jevshows configuration. Jev is a classifier, not a chat model, so it is exposed as a tool rather than a selectable model. Includes an opt-in bash gate (--jev-gate,JEV_BASH_GATE=1, or/jev gate on) that asks Jev whether each shell command is destructive and requests confirmation above a threshold (JEV_BASH_GATE_THRESHOLD, default 0.7); blocks in non-interactive mode, fails open on API errors
[0.9.38] - 2026-09-16
Added
-
Smart routing now picks the thinking level per turn, not just the model: a fast-tier turn (directory listing, quick question) runs at
minimal, balanced at up tomedium, powerful at the session level. The session setting is a ceiling that routing only ever lowers - never raises - and it is untouched in the footer and/thinking./routeshows the per-turn level -
Stale tool-output pruning: before each provider request, tool results older than 6 assistant turns and larger than 2000 characters are replaced with a one-line placeholder (
[read src/foo.ts, 412 lines – pruned from context; re-read if needed]). Request-time only - session history and compaction are unaffected, errors and image results are never pruned, and untouched messages keep reference identity for cache stability. Tune or disable with thecontextPruningsetting -
Stack-aware verification commands: the stack detector now derives the project's own checks (typecheck, lint, test, build) from
package.jsonscripts and lockfile,composer.json(pest/phpunit, pint, phpstan/larastan, composer scripts),Cargo.toml,pyproject.toml, andgo.mod, and lists them in the system prompt so "verify your work" names the exact commands to run -
Edit-failure escalation:
editerrors now say where to look - duplicates list the line numbers of each occurrence, not-found errors name the closest line matching the first line ofoldText(or say the file may have changed). After two consecutive failures on the same file, the tool result gains an explicit instruction to stop retrying blind, re-read the region, and rebuildoldTextfrom fresh content -
Stack-relevant skills: skills whose name, description,
compatibility, ormetadata.tagsmention a detected framework (with aliases, e.g. Flux UI ↔flux) are listed first in the system prompt with a lead-in naming them and a<relevant-to>marker, so the model reads the right skill for a Laravel + Livewire project without guessing
Changed
- System prompt gained a "How to work" section with working-method rules: read before editing, explore deliberately, prefer small targeted edits, ask when intent is ambiguous, verify with the project's own checks and never report unobserved success, stop when done without gold-plating, and change approach after repeated identical failures. Rules that depend on a tool are only emitted when that tool is available
[0.9.37] - 2026-09-11
Added
- Ledger-driven tier suggestions:
/routing-statsandelyra doctor routingnow end with concrete recommendations per smart-routing tier based on your local outcome ledger - switch a pinned model when a measured alternative is meaningfully better (higher success rate, or equal success at under 60% of the cost per turn), pin a tier that has none, or keep the current pin with the numbers that justify it. Nothing leaves your machine - Per-commit cost receipt: git commits made by the agent get an
Elyra-Cost: $0.42 (glm-5.3, 4 turns, 1 model switch)trailer showing spend since the previous commit, so teams see AI cost per change ingit log. Skips--amend/--fixup/--squash. Disable withgitCostTrailer: false
Changed
- Decision-aware compaction: when the project has a decision log, the summarizer is told which decisions are already recorded and references them by id instead of restating the rationale - smaller summaries, no lost reasoning (the full text lives on disk) - and does not re-extract them. Manual
/compactnow also persists extracted decisions
[0.9.36] - 2026-09-05
Added
- Project decision log: architecture decisions are persisted as one ADR-lite Markdown file per decision under
.elyra/memory/decisions/(frontmatter with id/date/status/supersedes; Context / Decision / Alternatives / Consequences), committed to git and shared with the team. Decisions are never deleted - a newer decision supersedes an older one decision_recordtool: the agent records a decision when the user settles an architecture or design choice with lasting impact (with the alternatives rejected). Guarded by thedecisionLogsetting:confirm(default) shows an approval dialog,autorecords silently,offdisables- Compaction now extracts unrecorded architecture decisions from the history being discarded (a machine-parseable block appended to the existing summarization call - no extra request). In
automode they are written to the log; inconfirmmode the candidates are surfaced in the status line - A budget-capped digest of active decisions is injected into the system prompt so future sessions respect them; full text stays on disk for
read /decisions [id|mode]command: list the log, show one decision (id or unique prefix), or switch mode (off/confirm/auto); argument autocomplete offers modes and ids
[0.9.35] - 2026-09-03
Added
/thinking [level]command: set the thinking level for the current model. Without an argument it opens a selector listing only the levels the model supports (current one marked); with an argument it sets the level directly and rejects levels the model does not offer. Argument autocomplete offers the valid levels
[0.9.34] - 2026-09-01
Changed
- Model registry refreshed: added Claude Fable 5.1 (Anthropic direct, Bedrock regional/global variants, and gateways — $10/$50, 1M context, adaptive thinking with a new max level), GLM-5.3 on HuggingFace, Qwen 3.8 Flash Next, Mercury 2.5 preview, Granite 4.2, and a wave of OpenAI
:batchvariants on the gateways. The Anthropic default staysclaude-sonnet-5— Fable 5.1 and Opus 5 are premium picks for the deep tier.
[0.9.33] - 2026-08-29
Added
- Mid-turn auto-compaction: when large tool results (big file reads, long test logs) push the context past the compaction threshold in the middle of a run, compaction now runs between the tool results and the next provider request instead of waiting for the request to fail with a context overflow and retrying
- Terminal capability overrides: new
terminal.hyperlinks,terminal.images, andterminal.trueColorsettings ("auto"default) force capabilities on or off when auto-detection is too conservative (unrecognized terminals) or wrong
[0.9.32] - 2026-08-25
Changed
- Vercel AI Gateway default bumped from
zai/glm-5.2tozai/glm-5.3(5.3 landed on the gateway) - Cloudflare AI Gateway default changed from
workers-ai/@cf/moonshotai/kimi-k2.6toclaude-sonnet-5: the gateway catalog dropped its Workers AI mirror and is BYOK-only now - Cerebras default changed from
zai-glm-4.7togpt-oss-120b(GLM 4.7 removed upstream)
[0.9.31] - 2026-08-16
Changed
- zai default model bumped from
glm-5.2toglm-5.3(1M context; Vercel AI Gateway default stays onzai/glm-5.2until 5.3 lands there)
[0.9.30] - 2026-08-12
Changed
- xAI default model bumped from
grok-4.5togrok-4.6(same $2/$6 pricing, 500K context) - The Anthropic extra-usage warning (subscription OAuth) is now shown once per install instead of once per session; the shown state is persisted as
warnings.anthropicExtraUsageShown
[0.9.29] - 2026-08-12
Fixed
- Anthropic requests failing with
400 invalid_request_errorwhen signed in with a subscription (OAuth): "A maximum of 4 blocks with cache_control may be provided. Found 5." The Claude Code identity block and the system prompt each carried a cache marker, which with the last-tool and first/last user message markers made five. Prefix caching means the marker on the system prompt already covers the block before it, so the identity block now carries one only when it is the sole system block
[0.9.28] - 2026-08-12
Changed
- OAuth callback pages (
/loginsuccess and error) show the Elyra constellation logo instead of the old placeholder mark
[0.9.27] - 2026-08-08
Added
/extcan now mark installed extensions for removal: space toggles[x](install) on packages you don't have and[-](remove) on ones you do, and enter applies both sets in one pass with per-package progresselyra doctor resources: lists running Elyra instances with uptime, accumulated CPU time, and memory (including child language servers and headless browsers), and flags instances that look forgotten (high memory + running for over a day) with a ready-to-paste kill hint. Built in response to battery/memory reports — idle Elyra uses no CPU, but forgotten instances hold their memory
[0.9.26] - 2026-08-07
Added
- Package browser: added
@elyracode/browser-tools(Playwright browser automation) - Goal economy mode: with the
goalBatchModelssetting enabled, smart routing swaps the routed model for its half-price:batchsibling (same provider) while a budgeted/goalruns — unattended loops tolerate batch latency, interactive turns are never swapped, and user-pinned tier models are never overridden. Batch variants are also excluded from normal tier selection so they cannot hijack interactive routing on price
Changed
/extnow shows which extensions are already installed: a green ✓ marker per installed package, an installed count in the title, and a legend. The installed check matches package sources exactly, solaravelno longer countslaravel-startersas installed (also fixes the Grove startup hint's matching)
[0.9.25] - 2026-08-03
Added
- Package browser: added
@elyracode/felagi(Félagi project portal integration)
[0.9.24] - 2026-07-24
Changed
- Model registry refreshed: adds
claude-opus-5(adaptive thinking, 1M context, May 2026 knowledge cutoff, $5/$25) — Anthropic's new recommended starting point for agentic coding. The Anthropic default staysclaude-sonnet-5($3/$15, intro-priced $2/$10 through August 2026)
Fixed
- Image paste (Ctrl+V) failing silently: when the optional
@elyracode/clipboardnative module is missing (npm skips optional dependencies that fail to install, e.g. when an update races registry propagation), pressing the paste-image shortcut now shows an actionable warning with the reinstall command instead of doing nothing
[0.9.23] - 2026-07-23
Fixed
/extinstalls no longer look like a hang: installing now shows a live spinner with per-package progress ("Installing @elyracode/x (2/8)...") instead of blocking the UI silently, installs run with a 2-minute timeout per package, and Escape cancels the remaining queue (already-installed packages are kept and reported)- Oversized images from extension tools (e.g. a full-page
screenshot_urlcapture taller than 8000px) no longer fail the whole turn with a provider 400. Extension tool results now pass through a hard-limit safety net that downscales images exceeding provider dimension limits, with a coordinate-mapping note appended
[0.9.22] - 2026-07-23
Changed
- Default models bumped:
azure-openai-responsestogpt-5.6,github-copilottogpt-5.5,zaitoglm-5.2,vercel-ai-gatewaytozai/glm-5.2 - Model registry refreshed: adds
claude-fable-5(Anthropic API: adaptive thinking with a newmaxlevel, 1M context) andsakana/fugu-ultra(via OpenRouter and Vercel AI Gateway), plus Gemini 3.6 Flash, Poolside Laguna S 2.1, Tencent HY3, and Meituan LongCat 2.0
[0.9.21] - 2026-07-19
Added
- Package browser: added
@elyracode/grove(Grove local dev environment integration) - Grove site detection: when the project is served by Grove (registered in Grove's config or under a parked path), Elyra suggests installing
@elyracode/groveat startup (skipped when already installed) and in/initoutput
[0.9.20] - 2026-07-19
Added
- Measured routing: Elyra now records per-model outcome measurements (turn success, edit failures, retries, failovers, latency, cost) to a local ledger (
~/.elyra/agent/routing-ledger.jsonl) and uses them to demote demonstrably unreliable models in cross-provider failover ranking. Only model ids, counters, and timings are stored — never prompts or code — and nothing leaves disk. Inspect withelyra doctor routingor/routing-stats; opt out with theroutingLedgersetting
[0.9.19] - 2026-07-18
Changed
- Redesigned the
/ext(/packages) extension browser: a clean, scrollable list with aligned name/description columns, multi-select via space (install one or several at once), and a persistent reminder to run/reloadafter installing. Adds@elyracode/stack-elyra-frameworkto the list.
[0.9.18] - 2026-07-18
Added
- Detect Elyra Framework (Rust + Svelte 5 desktop framework) projects via
elyra.tomlor anelyradependency inCargo.toml, suggesting@elyracode/stack-elyra-framework
Fixed
- Package browser: added missing
@elyracode/lsp-phpand@elyracode/stack-siltentries
[0.9.17] - 2026-07-18
Changed
- Default model bumped to
kimi-k3(Kimi K3: reasoning, text + image, 1M context) for themoonshotai,moonshotai-cn,opencode-go, andopenrouterproviders, replacingkimi-k2.6
[0.9.16] - 2026-07-15
Added
- Cross-vendor code review:
/review --crossreviews your changes with a model from a different vendor than the one you're using, for a genuinely independent second opinion (a same-family reviewer shares the author's blind spots). Falls back to the current model when no other provider is configured. Only possible because Elyra is provider-agnostic. - Cross-provider failover: when a turn fails because a provider is unavailable (overloaded, rate-limited, an auth problem, or a model that vanished such as an export-control suspension), Elyra automatically retries the turn on an equivalent model from another provider you hold keys for, instead of just surfacing the error. Modality-aware (an image conversation only fails over to vision-capable models) and capped at 2 attempts. Toggle with the
providerFailoversetting (default on). Only possible because Elyra is provider-agnostic.
[0.9.15] - 2026-07-12
Added
elyra doctor preflight: offline check that every configured default model still resolves against the model registry (catches defaults pointing at removed model ids), plus freshness nudges when a newer model is available for a provider- Visual QA (
@elyracode/design-tools): newdesign_difftool compares before/after screenshots so the agent can describe the visual delta and flag regressions;screenshot_urlnow supports element screenshots (selector), full-page capture, and reports browser console errors/warnings alongside the image
Changed
- Default xAI model is now
grok-4.5(reasoning, text + image), replacinggrok-4.20-0309-reasoning - A broken optional extension no longer blocks startup: it is skipped with an actionable warning (e.g. a reinstall hint when a dependency is missing) instead of failing to launch
[0.9.14] - 2026-07-09
Changed
- Default OpenAI model is now
gpt-5.6(1M+ context, reasoning), replacinggpt-5.4
[0.9.13] - 2026-07-08
Changed
- Upgraded to TypeScript 7.0 (the native compiler) across the workspace, bumping the
typescriptdevDependency from^6.0.3to^7.0.2
[0.9.12] - 2026-06-30
Changed
- Default Anthropic model is now
claude-sonnet-5(Claude Sonnet 5: 1M context, adaptive thinking, $2/$10 per million), replacingclaude-opus-4-8 - Default Amazon Bedrock model is now
us.anthropic.claude-sonnet-5, replacingus.anthropic.claude-opus-4-6-v1 - Smart routing now pins the
powerfultier toclaude-sonnet-5by default (usersmartRoutingModelssettings still override; the pin falls back to the heuristic when Anthropic is unavailable)
[0.9.11] - 2026-06-26
Changed
- Internal: removed all
anytypes from the embeddable@elyracode/web-uipackage (143 eliminated), adding precise discriminated-union types for the sandbox messaging protocol — no behavior change - Model registry data refresh
[0.9.10] - 2026-06-19
Added
- Stack detection now recognizes the SILT stack (Svelte 5 + Inertia + Laravel + Tailwind) and suggests
@elyracode/stack-silt
[0.9.9] - 2026-06-11
Added
- Budget-aware smart routing: when a budgeted
/goalis active, the router caps tiers as the budget depletes (balanced above 75% spent, fast above 90%) so the loop spends expensive turns early and rations later /route: show what smart routing would do for the next turn — classified tier with reason, the model each tier would pick (pins marked), budget capping status, and image-modality constraints/costnow shows a burn rate ($X.XX/hour at the current pace) once a session has more than a minute of activityelyra doctor models: live-verify configured providers against the model registry from the CLI (credentials from auth.json or env), with--provider,--model, and--maxfilters; exits non-zero on failures or mismatches for CI usesmartRoutingModelssetting: pin an explicit model per smart-routing tier ({"fast": "anthropic/claude-haiku-4-5", ...}) — the heuristic decides the tier, you decide the model; pins still respect the image-modality filter- Smart routing decisions are now visible in the chat as a dim status line ("smart routing: fast — read-only tools → Haiku") instead of switching models silently
Fixed
- Smart routing no longer escalates permanently to the powerful tier after a few turns: conversation length is now measured in user turns instead of raw messages (tool results inflated the count immediately)
- Smart routing now filters candidates by input modality, so conversations containing images can never be routed to a text-only model
- Smart routing model selection within a tier now prefers same-provider, reasoning-capable, paid models by cost instead of blindly picking the largest context window (which could select a slow 1M-context flagship as the "fast" model)
- Smart routing hysteresis now tracks the classified tier on every turn, including turns where the model did not change
[0.9.8] - 2026-06-10
Added
/goal <cmd> --budget <usd>: cost-capped autonomy — the goal loop stops and reports once the spending cap is reached, keeping the work done so far/replay <model>: replay the last turn on a new branch with a different model; the original branch is kept for comparison via/tree, and the replay cost is reported/learn [topic]: extract a reusable skill from the current session — writes a draftSKILL.mdto the user skills directory for review and/reload
Changed
elyra updatenow checks the npm registry first and reports "Elyra is up to date (version)" instead of reinstalling and claiming success when already on the latest version; use--forceto reinstall anyway
[0.9.7] - 2026-06-10
Added
- Thinking-type detection is metadata-driven rather than pattern-matched on model ids, so a model declares how it reasons instead of being guessed at by name
[0.9.6] - 2026-06-09
Added
- Claude Fable 5 support
[0.9.5] - 2026-06-07
Added
- MiniMax M3 on the direct
minimaxandminimax-cnproviders (512k context, 128k max output, reasoning, text + image)
Changed
- Upgraded the Anthropic SDK from
0.97.1to0.102.0
[0.9.4] - 2026-06-06
Changed
- Replaced the third-party native clipboard dependency with an in-repo fork,
@elyracode/clipboard, so the project controls its development and maintenance. The runtime behavior (optional native module with graceful fallback) is unchanged.
[0.9.3] - 2026-06-06
Added
- Self-writing extensions: the agent can give itself a tool it doesn't have via the new
extension_writetool, which scaffolds a TypeScript extension when a needed capability is missing. Approval-by-default with an "Auto-save extensions" setting in/settings. /review: get an independent, second-opinion code review of your changes from the model with a clean reviewer prompt and no conversation context. Flags:--session(the agent's changes this session), or a path./bisect: binary-search the session's checkpoints to find which agent turn introduced a problem, likegit bisectbut over the agent's own turns./bisect <command>runs automatically (exit 0 = good); without a command it asks you to mark each step. The working tree is always restored afterward.
[0.9.2] - 2026-06-06
Added
/updatenow updates installed extensions too, not just Elyra itself. It checks for both an Elyra version update and out-of-date extensions, updates everything, and restarts once.
Fixed
- A user's prompt is now flushed to disk when the agent starts a turn, so it survives a crash during a long initial LLM call (previously entries were deferred until the first assistant message arrived)
[0.9.1] - 2026-06-01
Added
- Scrollable in-TUI diff viewer:
/diffnow opens a full-height, syntax-highlighted viewer (scroll with arrows/PgUp/PgDn, g/G for top/bottom) instead of dumping a markdown block into the chat /diff --editor(-e) and a "Diff in editor" setting: open the diff in$VISUAL/$EDITOR. Presseinside the viewer to open the same diff in your editor./diff --session: show only what the agent changed this session (diffed against the session's first checkpoint)/diff --cached: show staged changes/diff <path>: filter the diff to a file or directory- Plain
/diffnow also lists untracked files
Fixed
- Replaced an inline import in the diff command with a top-level import; raised the diff buffer limit to 32MB
[0.9.0] - 2026-05-31
Added
- Self-writing skills: the agent can now save a hard-won solution as a reusable skill via the new
skill_writetool, so future sessions never re-solve the same problem. Skills are saved to user (~/.elyra/agent/skills) or project (.elyra/skills) scope. - "Auto-save skills" setting in
/settings(default off). When off, the agent shows a Save/Discard prompt before saving each skill. When on, it saves autonomously.
[0.8.2] - 2026-05-28
Changed
- Default Anthropic model updated from Claude Opus 4.7 to Claude Opus 4.8
[0.8.0] - 2026-05-27
Fixed
- Synchronous busy-wait spin locks in auth-storage and settings-manager replaced with
Atomics.wait— no longer burns CPU at 100% during lock contention - Edit tool
tsccheck converted from blockingspawnSync(up to 15s) to asyncexecFile— streaming, UI, and concurrent tools no longer freeze during type checking exec.tsnow preserves error messages from failed process spawns instead of discarding them- Checkpoint persistence uses atomic write (temp file + rename) to prevent corruption on crash
- Memory generation errors are now logged instead of silently swallowed
- Agent retry
continue()errors are now logged instead of silently swallowed - Unbounded
errorsarrays in auth-storage and settings-manager capped at 100 entries
[0.7.15] - 2026-05-25
Added
@elyracode/btwextension: parallel side conversations with/btw,/btw:inject,/btw:summarize,/btw:clear, and/btw:threadcommands
[0.7.14] - 2026-05-25
Fixed
@elyracode/laravelextension crashed on startup withgetCwd is not defined— fixed variable reference in session_start handler
[0.7.13] - 2026-05-25
Changed
- Startup animation replaced with constellation design matching the favicon.svg — orange gradient with highlighted nodes
@elyracode/laravelskill updated withdb-toolsintegration guidance for combined model-vs-schema analysis@elyracode/laraveltools now register only in Laravel projects (no tool clutter in non-Laravel workspaces)
[0.7.12] - 2026-05-24
Added
@elyracode/laravelextension: deep Laravel project understanding withlaravel_models,laravel_routes, andlaravel_analyzetools
[0.7.11] - 2026-05-24
Added
/goal <command>command: set a completion condition and the agent keeps working until the command exits with code 0. Type/goalagain to clear./updatecommand: update Elyra to the latest version and restart without leaving the session- In-app update notification shows
/updateinstead of requiring manual terminal commands
[0.7.10] - 2026-05-24
Changed
edittool now runs TypeScript diagnostics after each successful edit and reports new errors to the agent immediatelyreadtool returns a structural outline (function/class/interface signatures with line numbers) for files over 150 lines instead of truncated contentreadtool annotates each line with a short content hash (#xxxx |) for precise edit targetingedittool transparently strips hash annotations fromoldText/newTextso copy-paste from annotated reads works directly
[0.7.9] - 2026-05-23
Added
@elyracode/workflowsextension: code-orchestrated workflow pipelines defined in.elyra/workflows/. Supportsprompt,run,if, andparallelstep types with template interpolation between steps. Code handles control flow, the LLM handles judgment — no token tax from LLM-based orchestration./workflowcommand to list and execute workflowselyra-workflowsskill teaching the agent about workflow patterns
[0.7.8] - 2026-05-23
Added
@elyracode/seoextension: SEO and LLM optimization withseo_audit,seo_generate_llms_txt,seo_generate_schema, andseo_generate_metatools
[0.7.7] - 2026-05-23
Added
@elyracode/lsp-typescriptextension: TypeScript LSP integration withlsp_definitions,lsp_references,lsp_diagnostics, andlsp_hovertools for semantic code navigation
Changed
- Pinned file contents are now placed before the date in context injection for improved prompt cache hit rates
[0.7.6] - 2026-05-23
Added
/rewindcommand: roll back both conversation history and filesystem state to a previous point. Git checkpoints are automatically created before each agent turn and persisted alongside the session file.app.session.rewindkeybinding: trigger/rewindvia configurable keyboard shortcutrewindaction inExtensionCommandContextActions: extensions can programmatically trigger rewind operations
[0.7.4] - 2026-05-22
Added
- Version update notification on startup: checks npm registry and shows
elyra updatecommand when a newer version is available @elyracode/design-lookupextension added to/extpackage browser
[0.7.3] - 2026-05-22
Added
/skills install <name>command: install skills from the community registry at github.com/kwhorne/elyra-skills. Supports multiple skills in one command.
[0.7.2] - 2026-05-21
Added
@elyracode/design-lookupextension: extract design systems from any website (colors, typography, spacing, components, layout) via/lookup-design <url>
[0.7.1] - 2026-05-21
Added
- Full Anthropic Agent Skills spec compatibility:
allowed-tools,compatibility,license,metadatafrontmatter fields - Auto-discovery of
scripts/andreferences/directories in skill folders, exposed to the agent via system prompt /skillscommand: list all loaded skills with details, script/reference counts, and source info
[0.7.0] - 2026-05-21
Changed
- Major dependency upgrades:
diff9.0,marked18.0,vitest4.1,typescript6.0 - TypeScript target bumped from ES2022 to ES2024
- Updated
@typescript/native-preview(tsgo) to latest
[0.6.4] - 2026-05-20
Changed
- Upgraded
@anthropic-ai/sdkto 0.97.1 andopenaito 6.38.0
[0.6.3] - 2026-05-19
Added
/snippetcommand: reusable instruction snippets from.elyra/snippets/with selector and autocomplete/initnow creates.elyra/snippets/directory
[0.6.2] - 2026-05-17
Added
/initcommand: interactive project setup. Creates.elyra/AGENTS.mdwith stack detection,.elyra/blueprints/, and suggests extensions based on detected frameworks.
[0.6.1] - 2026-05-17
Added
/memorycommand: view, clear, or locate project memory. Shows the knowledge Elyra has built across sessions.- First-run welcome message with example prompts for new projects (shown when no
.elyra/directory exists) /helpcommand: example prompts, useful commands, and link to elyracode.com- Onboarding text now references elyracode.com for docs and guides
[0.6.0] - 2026-05-17
Added
/footercommand: toggle between full and minimal footer. Minimal shows only cwd, git branch, and model name.- Norwegian Midnight built-in theme (Nord palette with deeper backgrounds)
@elyracode/swarmextension: multi-agent pipeline orchestration with build, review, and refactor pipelines@elyracode/dockerextension: container-aware development with exec routing, log tailing, compose operations, and environment sync
Changed
- Compaction summarization prompts now preserve Architecture & Patterns, Error History, exact file paths, error messages, and stack traces
- Tool result serialization limit increased from 2000 to 4000 characters for richer compaction context
- Smart router expanded from 8 to 35 complex keywords covering debugging, architecture, and performance terms
- Smart router adds hysteresis to prevent tier oscillation between turns
- Smart router gates read-only de-escalation on conversation length (< 10 messages only)
- Smart router escalates to powerful tier on large tool outputs (> 5000 chars)
- Current date moved from system prompt to context injection for better LLM cache hit rates
- Upgraded @anthropic-ai/sdk to 0.96.0, openai to 6.38.0, @biomejs/biome to 2.4.15
Fixed
- Added
@elyracode/swarmto/extpackage browser list - Updated xAI test model references after grok-3 removal from API
[0.5.10] - 2026-05-15
Fixed
- Added
@elyracode/swarmto the/extpackage browser list
Added
@elyracode/dockerpackage: Docker-aware development with container exec, log tailing, compose operations, and environment sync
[0.5.9] - 2026-05-15
Added
- Built-in theme: Norwegian Midnight (Nord palette with deeper backgrounds)
@elyracode/swarmpackage: multi-agent pipeline orchestration with/swarm build,/swarm review, and/swarm refactorcommands. Pipelines chain focused agent stages (plan → code → test → review → fix) with visual progress tracking. Read-only stages cannot edit files; only implementation stages can write.
[0.5.8] - 2026-05-15
Added
/costcommand: displays session token usage, estimated cost, and context window utilization/diffcommand: shows uncommitted git changes with syntax-highlighted diff output/pin <path>and/unpin <path>commands: pin files to context so they survive compaction. Pinned file contents are injected into every LLM call./pinscommand: list currently pinned files/blueprint [name]command: apply session blueprints from.elyra/blueprints/or~/.elyra/agent/blueprints/. Supports YAML frontmatter withpindirectives.
[0.5.7] - 2026-05-15
Added
/themeslash command: opens a theme selector with live preview, or switch directly with/theme <name>. Includes autocomplete for theme names.
[0.5.6] - 2026-05-15
Added
- Built-in themes: Palenight, Catppuccin Mocha, and One Dark Pro (available via
/theme)
[0.5.5] - 2026-05-14
Changed
estimateTokensnow caches results per message in a WeakMap, avoiding redundant token recomputation for immutable messages across compaction checksExtensionRunner.emitContextskipsstructuredCloneentirely when no extension has registered a context handler- Agent session uses
agent.appendMessage()instead of mutatingagent.state.messagesdirectly
[0.5.4] - 2026-05-14
Added
- Anna.js extension (
@elyracode/anna): generate, preview, and build Markdown presentations with terminal animations, live code playgrounds, Mermaid diagrams, and component layouts
[0.5.3] - 2026-05-14
Added
- Laravel Herd integration (
@elyracode/herd): environment detection, service status, error logs, .env sync checks, PHP version management
[0.5.2] - 2026-05-14
Added
- Git intelligence (
@elyracode/git-intel): session briefings, commit message generation, PR descriptions - Test generator (
@elyracode/test-gen): intelligent test generation for Pest (Laravel) and Vitest (TypeScript) - Performance analyzer (
@elyracode/perf-tools): N+1 query detection, slow queries, missing indexes, eager loading - Localization tools (
@elyracode/i18n-tools): find hardcoded strings, compare translations across locales
[0.5.1] - 2026-05-13
Added
/packagesand/extcommands: interactive TUI browser for all @elyracode extensions with descriptions, install directly without leaving Elyra- SQLite support in
@elyracode/db-toolswith auto-detection from .env
[0.5.0] - 2026-05-13
Added
- SQLite support in
@elyracode/db-tools: query_sqlite tool with auto-detection from .env (DB_CONNECTION=sqlite) and Laravel defaults - SQLite schema discovery via get_database_schema
Fixed
- All package install/remove/update operations now suppress npm noise (warnings, funding, package counts)
- Clean CLI output for install: shows only "Installing...", "Installed", and activation instructions
[0.4.9] - 2026-05-13
Added
- Subagent orchestrated workflows:
/build-feature(scout -> planner -> oracle -> worker -> reviewer -> fix),/ui-review(adversarial UI testing with screenshots and accessibility checks),/deep-review(parallel correctness + tests + security review with synthesis) - Git integration:
/git-review(review diff with go/no-go verdict),/setup-git-hook(install pre-push hook that blocks pushes with issues)
[0.4.8] - 2026-05-13
Added
- Design tools extension (
@elyracode/design-tools): live browser preview with Tailwind CDN, screenshot capture for visual QA, Tailwind design system consistency checker - Subagents extension (
@elyracode/subagents): delegate to focused child agents (scout, reviewer, planner, worker, oracle, researcher, delegate) with single and parallel execution
[0.4.7] - 2026-05-12
Added
- Design tools extension (
@elyracode/design-tools): live browser preview with Tailwind CDN, screenshot capture for visual QA, and Tailwind design system consistency checker
[0.4.6] - 2026-05-11
Added
- HTTP tools extension (
@elyracode/http-tools): API testing, live documentation fetching, and OpenAPI/Swagger spec parsing
[0.4.5] - 2026-05-11
Added
@elyracode/doctor: Auto-heal mode (/doctor --heal) that instructs the agent to fix each issue step by step
[0.4.4] - 2026-05-11
Added
- Project health analysis (
@elyracode/doctor): security audit, outdated deps, code debt scanner, large file detection, .env validation, git status, project essentials check
[0.4.3] - 2026-05-11
Added
- RILT stack extension (
@elyracode/stack-rilt): React 19, Inertia.js 2, Laravel, Tailwind CSS 4, shadcn/ui - Stack detector now recognizes RILT projects
Fixed
elyra updatenow shows clean output (version info, progress) instead of raw npm noise
[0.4.2] - 2026-05-11
Added
- RILT stack extension (
@elyracode/stack-rilt): React 19, Inertia.js 2, Laravel, Tailwind CSS 4, shadcn/ui - Stack detector now recognizes RILT projects (React + Inertia + Laravel + Tailwind)
[0.4.1] - 2026-05-11
Added
- Filament v5 extension (
@elyracode/stack-filament): admin panels, resources, tables, forms, actions, widgets, multi-tenancy, testing - Stack detector now detects Filament and Laravel AI SDK in composer.json
[0.4.0] - 2026-05-11
Added
- Flux UI extension (
@elyracode/flux-ui): live component index from GitHub, Blade-to-Flux converter, page generator with Livewire 4 - Laravel AI SDK extension (
@elyracode/stack-laravel-ai): complete reference for agents, sub-agents, tools, structured output, embeddings, vector stores, streaming, and testing
[0.3.7] - 2026-05-11
Added
- Flux UI extension (
@elyracode/flux-ui): live component index from GitHub, Blade-to-Flux converter, and page generator
[0.3.6] - 2026-05-11
Added
@elyracode/laravel-starters: GitHub file cache (~/.elyra/cache/github/) with 24h TTL for instant repeat fetches@elyracode/laravel-starters:apply_starter_filestool to write kit files directly to disk with path filtering and excludes
Fixed
- CI: resolved platform-specific native module issues (tsgo, lightningcss, parcel/watcher, tailwind oxide)
- CI: fixed failing self-update tests after version-check removal
[0.3.5] - 2026-05-10
Added
- PrimeVue 4 extension (
@elyracode/stack-primevue): 80+ UI component reference for Vue 3 with Laravel/Inertia patterns
[0.3.4] - 2026-05-10
Added
- Laravel starters package (
@elyracode/laravel-starters): fetch and customize official Laravel 13.x starter kits from GitHub fetch_laravel_startertool: agent auto-fetches React, Vue, Svelte, or Livewire starter kits as referencefetch_github_repotool: fetch any public GitHub repo as context/laravel:startercommand: interactive TUI selector for starter kits
Fixed
- Laravel starters updated to current Laravel 13.x kits (React/shadcn, Vue/shadcn-vue, Svelte/shadcn-svelte, Livewire/Flux UI)
[0.3.3] - 2026-05-10
Added
- Animated startup logo with sky-to-teal gradient, revealed line by line on first launch
[0.3.2] - 2026-05-10
Fixed
@elyracode/db-tools: Auto-loads.envfile from project root with Laravel/Docker key mapping (DB_HOST, DB_DATABASE, CLICKHOUSE_HOST, etc.)@elyracode/db-tools: ExplicitELYRA_*env vars always take precedence over.envvalues
[0.3.1] - 2026-05-10
Added
- Database tools package (
@elyracode/db-tools): query MySQL and ClickHouse with schema awareness - Read-only by default with
ELYRA_DB_ALLOW_WRITESescape hatch
Fixed
- ClickHouse config uses granular env vars (HOST, PORT, HTTPS, timeouts) instead of a single URL
[0.3.0] - 2026-05-10
Added
- Stack detection: automatically detects TALL and VILT stacks from composer.json/package.json
- Stack info injected into system prompt so the agent always knows the project's technology stack
- Auto-suggestion in interactive mode to install matching stack profile packages
- Also detects: React, Svelte, TypeScript, Vite, Sanctum, Reverb
[0.2.0] - 2026-05-10
Added
- Smart model routing: automatically selects optimal model tier per turn based on task complexity
- Codebase memory: persistent project knowledge across sessions via LLM-generated summaries
Changed
- npm scope changed from
@elyrato@elyracode