<p>Here's a walk through them.</p><h2>The quiet engineering (v0.5.5)</h2><p>Most of v0.5.5 is the kind of work nobody notices until it's gone. The agent just feels snappier in long sessions, and that's because four different bottlenecks got addressed.</p><p>When the agent calls several tools in one response — say, three <code>read_file</code>s and a <code>run_command</code> — the old behavior was to serialize the whole batch the moment anything needed to run sequentially. Now the batch gets split: parallel tools run concurrently, sequential tools act as barriers. The reads finish together, then the command runs. Multi-tool turns just complete faster.</p><p>Event listeners used to take turns blocking the LLM stream. UI rendering, disk persistence, memory management — one at a time, while the next token waited politely. They're now dispatched concurrently, so nothing has to queue.</p><p>Token estimates for the compaction system are cached per message in a WeakMap. Since messages are immutable after creation, the cache hit rate climbs nicely in long sessions, and repeated compaction checks skip the work entirely for messages they've already seen.</p><p>And then there's a small but mighty fast path: the extension runner used to <code>structuredClone</code> the entire conversation history before handing it to context handlers — even when no extension had registered a handler. For sessions without extensions, which is most sessions, that clone is now skipped. The biggest single cost in the transform pipeline, just deleted.</p><p>None of this is glamorous. All of it adds up.</p><h2>Themes (v0.5.6 and v0.5.7)</h2><p>Elyra used to ship with <code>dark</code> and <code>light</code>. Now there are five.</p><p><strong>Palenight</strong> is based on whizkydee's classic VS Code theme. Purple accent, teal operators, muted blue-gray backgrounds. Soft and warm — if you like your terminal to feel like a cozy evening, this one's for you.</p><p><strong>Catppuccin</strong> uses the Mocha flavor. If you've already Catppuccinified your editor, your tmux, your shell, and probably your toaster, the set is now complete.</p><p><strong>One Dark</strong> is the familiar Atom palette via Binaryify's One Dark Pro. Blue accent, neutral, the comfort food of dark themes.</p><p>Switching is straightforward:</p><pre><code>/theme palenight
/theme catppuccin
/theme onedark
</code></pre><p>Or just type <code>/theme</code> to get a live-preview selector — the theme changes as you arrow through the list and reverts if you cancel, which is the right way to do this and I'm glad they did. Your choice persists across sessions.</p><p>Custom themes work too. Drop a JSON file in <code>~/.elyra/themes/</code> following the schema from any built-in theme, and it shows up in the selector immediately.</p><h2>/cost (v0.5.8)</h2><p>You always had this data — every provider response carries usage info. You just had no convenient way to see it. Now you do:</p><pre><code>Session Cost

Input:      42,380 tokens
Output:     8,912 tokens
Cache read:  38,100 tokens
Cache write: 4,280 tokens
Total:      93,672 tokens

Estimated cost: $0.1847
Context:    67,200 / 200,000 (34%)
</code></pre><p>That's <code>/cost</code>. Input, output, cache hits, estimated dollars, and how full your context window is. No external tracking, no config. Just visibility.</p><p>I find this one quietly useful. Knowing you're at 34% context utilization tells you whether to keep going or wrap up the current thread before compaction kicks in.</p><h2>/diff (v0.5.8)</h2><p>After the agent has been editing for a while, you often want the bird's-eye view before committing. <code>/diff</code> runs <code>git diff</code> in the session directory and renders the output with syntax highlighting.</p><p>That's it. No interactive accept/reject per hunk, no staging mode. Just <code>git diff</code>, pretty-printed. Sometimes the right feature is the smallest possible feature.</p><h2>Context pinning (v0.5.8)</h2><p>This one solves a problem I've actually run into. Long sessions trigger compaction, which summarizes older messages to free up space — and sometimes it summarizes away the file you really needed the agent to keep referencing.</p><p>Pinning sidesteps the whole mess:</p><pre><code>/pin src/core/auth.ts
/pin .env.example
</code></pre><p>Pinned files don't live in the conversation history. They get re-read from disk and injected fresh at the start of every LLM call. Compaction can't touch them, because they're not messages — they're context. And because they're re-read each turn, the agent always sees the current contents, even if you've edited the file since pinning.</p><p>Check what's pinned with <code>/pins</code>, remove with <code>/unpin &lt;path&gt;</code>. Pins are project-scoped and survive across sessions via <code>.elyra/settings.json</code>.</p><p>A few uses that have stuck for me:</p><ul><li><p>Pin your schema file so the agent always knows the data model</p></li><li><p>Pin <code>.env.example</code> so it knows what config exists</p></li><li><p>Pin a style guide you want followed</p></li><li><p>Pin the file you're actively working on so compaction never drops it</p></li></ul><h2>Blueprints (v0.5.8)</h2><p>Blueprints are session templates. If you keep starting sessions with the same instructions — "follow these patterns, pin these files, here's what I'm building" — you can save that as a blueprint and apply it with one command.</p><p>A blueprint is just a markdown file in <code>.elyra/blueprints/</code> (project-local) or <code>~/.elyra/agent/blueprints/</code> (global):</p><pre><code class="language-markdown">---
pin: src/routes/api.ts, src/middleware/auth.ts
---

Build a new API endpoint following the patterns in the pinned files.
Use the existing auth middleware. Return JSON responses with proper
error handling. Add request validation. Write a test.
</code></pre><p>Apply it with <code>/blueprint api-endpoint</code>. The listed files get pinned, the body becomes the first message. Type <code>/blueprint</code> alone to see what's available.</p><p>The format is whatever you'd normally type as your first message, plus an optional <code>pin:</code> frontmatter line. That's the whole spec.</p><p>A few ideas worth stealing:</p><ul><li><p><strong>api-endpoint</strong> — pins routes and middleware, instructions for REST conventions</p></li><li><p><strong>component</strong> — pins your component library and design tokens, instructions for new UI work</p></li><li><p><strong>migration</strong> — pins schema and model directory, instructions for database changes</p></li><li><p><strong>bugfix</strong> — pins your tests directory, instructions to reproduce first, then fix, then verify</p></li></ul><hr><p>Four releases, a long list of small things. None of them rewrite how Elyra works; together they make it noticeably nicer to live in. Which, honestly, is what most release notes should sound like.</p>