You've already forked zblade.dev
1629 lines
77 KiB
Plaintext
1629 lines
77 KiB
Plaintext
---
|
||
import BaseLayout from '../layouts/BaseLayout.astro';
|
||
---
|
||
|
||
<BaseLayout title="Changelog - Zaguán Blade" description="Release history and changes for Zaguán Blade.">
|
||
<main>
|
||
<!-- Hero Section -->
|
||
<section class="changelog-hero">
|
||
<div class="container">
|
||
<div class="hero-content">
|
||
<div class="hero-label">// CHANGELOG.md</div>
|
||
<h1 class="hero-title">
|
||
<span class="title-line-1">CHANGELOG</span>
|
||
<span class="title-accent">RELEASE HISTORY & BUILD NOTES</span>
|
||
</h1>
|
||
<p class="hero-description">
|
||
Honest release history built by humans who curse at compiler errors like everyone else.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- v0.6.2 Section -->
|
||
<section id="v0-7-0" class="changelog-section">
|
||
<div class="container">
|
||
<div class="version-card version-development">
|
||
<div class="version-header">
|
||
<div class="version-info">
|
||
<h2 class="version-number">v0.7.0</h2>
|
||
<span class="version-date">TBD</span>
|
||
</div>
|
||
<span class="version-badge badge-development">Development</span>
|
||
</div>
|
||
|
||
<div class="version-content">
|
||
<div class="version-resume">
|
||
<p>Mostly UI polish in this release: a rebuilt chat panel that actually feels snappy, tighter editor scrolling so you won't curse at your mouse wheel anymore, fix for the Alt+TAB window title display bug that was driving users insane, and CSS cleanup that didn't make things look like a 2010-era IDE:</p>
|
||
</div>
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
Enhancements
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Dependencies.</strong> Updated Tauri to the latest version.</li>
|
||
<li><strong>AI Chat.</strong> Optimized the AI Chat based on technical inspiration from <a href="https://github.com/pingdotgg/t3code" target="_blank" rel="noopener">T3Code</a>.</li>
|
||
<li><strong>CodeMirror Editor.</strong> Optimized the CodeMirror editor to get React out of the way to make it faster, more reliable and better overall.</li>
|
||
<li><strong>PHP Support.</strong> Added highlighting for PHP in CodeMirror.</li>
|
||
<li><strong>Node Modules.</strong> Updated Node modules and crates for both frontend and backend.</li>
|
||
<li><strong>Local Storage.</strong> Fixed save and retrieval in both Zaguán Blade and Zaguán Coder Daemon.</li>
|
||
<li><strong>Progress Card.</strong> Refined the Progress card in the chat by removing unnecessary information.</li>
|
||
<li><strong>Rust Cleanup.</strong> Refactored and removed old and almost unused Rust code/files.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Enabled parallel tool calling for DeepSeek v4.</li>
|
||
<li><strong>Zaguán Blade.</strong> Created a new version of the AI Chat Panel.</li>
|
||
<li><strong>Alt-TAB.</strong> <code>Alt-TAB</code> now properly displays the Project name and the Filename.</li>
|
||
<li><strong>CSS.</strong> Refactored a lot of the CSS for the UI to use proper names instead of hardcoding values.</li>
|
||
<li><strong>Scrolling.</strong> Made scrolling a lot smoother across the board.</li>
|
||
<li><strong>Dependencies.</strong> Added <code>.pnpm-store</code> to <code>.gitignore</code> and Gix ignored logic.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Giving better feedback to the models on tool call errors.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Updated 2 skills to be more aligned with 2026 best practices.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Added a new skill, complexity-radar, based on <a href="https://github.com/Kappaemme-git/codex-complexity-optimizer" target="_blank" rel="noopener">Codex Complexity Optimizer</a>.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">🐛</span>
|
||
Bug Fixes
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Zaguán Coder Daemon.</strong> Fixed a bug where it reconnected to the provider in a longer session.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Wired up <code>zlp_request</code>. It was planned, but missing.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Fixed loading the History in Zaguán Blade.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Fixed a bug that prevented Mistral 3.5 from working past the first response.</li>
|
||
<li><strong>File Explorer.</strong> Fixed a bug where moving files was not possible using the mouse.</li>
|
||
<li><strong>Terminal.</strong> Fixed a bug where it wasn't possible to interact with the Terminal when the model was running commands.</li>
|
||
<li><strong>Local AI.</strong> Fixed a bug in the Local AI implementation that would result in Gemma4 dying after the first response.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Fixed a bug that could result in the model continuing to work after a clear end summary message.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Fixed connection bug after a long period of inactivity.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Fixed an issue that would block proper <code>run_command</code> tool calls using <code>sed</code> or <code>cat</code>.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- v0.6.1 Section -->
|
||
<section id="v0-6-1" class="changelog-section">
|
||
<div class="container">
|
||
<div class="version-card version-latest">
|
||
<div class="version-header">
|
||
<div class="version-info">
|
||
<h2 class="version-number">v0.6.1</h2>
|
||
<span class="version-date">April 29, 2026</span>
|
||
</div>
|
||
<span class="version-badge badge-latest">Latest</span>
|
||
</div>
|
||
|
||
<div class="version-content">
|
||
<div class="version-resume">
|
||
<p>Stability updates, new model previews, and some much-needed fixes that kept getting ignored or put on the back burner. The API key management bugs that were causing chaos finally squashed, and the diff review workflow got a long-overdue polish treatment.</p>
|
||
</div>
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
Enhancements
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>New Models.</strong> Introducing DeepSeek V4 Pro and Flash, plus gpt-5.5. These are currently in testing and may be unstable.</li>
|
||
<li><strong>New Models.</strong> Crafted a new system prompt for gpt-5.5 based on documentation from OpenAI.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Added a new PRD Skill.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Added a save and fetch of memories.</li>
|
||
<li><strong>Dependencies.</strong> Updated node modules and crates to their latest versions.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">🐛</span>
|
||
Bug Fixes
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Zaguán Blade.</strong> Fixed a bug that would overwrite <code>.gitignore</code>.</li>
|
||
<li><strong>Zaguán Blade.</strong> Fixed a bug that resulted in the Diff View would not appear, nor the Accept/Reject question.</li>
|
||
<li><strong>Zaguán Blade.</strong> Fixed a bug in the file state that resulted in <code>apply_patch</code> hanging without being able to complete successfully.</li>
|
||
<li><strong>Zaguán Blade.</strong> Fixed a bug that would cause CPU spikes at idle.</li>
|
||
<li><strong>Zaguán Blade.</strong> Fixed the issue where the application would go black after a while of inactivity.</li>
|
||
<li><strong>Zaguán Blade.</strong> Fixed warnings in <code>tsconfig.json</code> and <code>UseChat.tsx</code>.</li>
|
||
<li><strong>Zaguán Blade.</strong> Fixed lag in the chat when sending long messages, especially Markdown.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Fixed an issue in the Google Gemini system prompt and logic to make it work better.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Fixed parallel tool calling. Gives a perceived 10x speed improvement.</li>
|
||
<li><strong>Local AI.</strong> Fixed a bug so that it loads the correct System Prompt.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- v0.6.0 Section -->
|
||
<section id="v0-6-0" class="changelog-section">
|
||
<div class="container">
|
||
<div class="version-card version-previous">
|
||
<div class="version-header">
|
||
<div class="version-info">
|
||
<h2 class="version-number">v0.6.0</h2>
|
||
<span class="version-date">April 9, 2026</span>
|
||
</div>
|
||
<span class="version-badge badge-previous">Previous</span>
|
||
</div>
|
||
|
||
<div class="version-content">
|
||
<div class="version-resume">
|
||
<p>Development builds focused on a deep security audit skill, improved model communication, WebSocket migration, and a polished Diff View experience.</p>
|
||
</div>
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
Enhancements
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Zaguán Coder Daemon.</strong> Added a brand new skill aimed at doing a deep security audit.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Fixed how models communicate and how much.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Added the full path and file name so that the model knows what it's working with.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Added retry logic for all models in case of different errors occurring.</li>
|
||
<li><strong>Diff View.</strong> Enhanced the Diff View in Zaguán Blade and made it look more coherent and nice.</li>
|
||
<li><strong>WebSocket Migration.</strong> Moved the History and the ZLP lookup from HTTP/SSE to WebSocket in both zcoderd and zblade.</li>
|
||
<li><strong>Zaguán Blade.</strong> Optimizations and enhancements to both frontend and backend.</li>
|
||
<li><strong>CodeMirror.</strong> Made the scrolling feel smoother.</li>
|
||
<li><strong>Canvas.</strong> Added a hook to repaint the canvas, especially on Linux/X11/Openbox.</li>
|
||
<li><strong>Local AI.</strong> Zaguán Blade now supports Gemma 4 with Local AI (Ollama and OpenAI-compat).</li>
|
||
</ul>
|
||
</div>
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">🐛</span>
|
||
Bug Fixes
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>General.</strong> Many bugs fixed.</li>
|
||
<li><strong>Terminal.</strong> Fixed bugs that caused the Terminal to not display Tab text or requests from the shell.</li>
|
||
<li><strong>Terminal.</strong> Continuing to fix the bug where <code>run_command</code> requests from the model aren't showing up correctly.</li>
|
||
<li><strong>Local AI.</strong> Fixed a Local AI leak that was sent to the server.</li>
|
||
<li><strong>File Explorer.</strong> Fixed a regression where files and folders weren't displaying correctly.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- v0.5.0 Section -->
|
||
<section id="v0-5-0" class="changelog-section">
|
||
<div class="container">
|
||
<div class="version-card version-previous">
|
||
<div class="version-header">
|
||
<div class="version-info">
|
||
<h2 class="version-number">v0.5.0</h2>
|
||
<span class="version-date">March 25, 2026</span>
|
||
</div>
|
||
<span class="version-badge badge-previous">Previous</span>
|
||
</div>
|
||
|
||
<div class="version-content">
|
||
<div class="version-resume">
|
||
<p>This release introduces semantic code search, giving Zaguán Blade a deep reference map of your codebase so the model can find the exact context it needs with higher accuracy and far fewer tokens.</p>
|
||
</div>
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
Enhancements
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Semantic Search.</strong> Zaguán Blade now analyzes your codebase and builds a deep reference map that the model can query semantically.</li>
|
||
<li><strong>Smarter Context Retrieval.</strong> Instead of pulling broad chunks of code, the model can now pinpoint the most relevant symbols, files, and references it actually needs.</li>
|
||
<li><strong>Lower Token Usage.</strong> Semantic search helps reduce context size while improving response quality and precision across code understanding tasks.</li>
|
||
<li><strong>Configuration Redesign.</strong> Reworked <strong>Settings</strong> into <strong>Configuration</strong> for a clearer and more intentional setup experience.</li>
|
||
<li>Fully implemented <strong>i18n</strong> for <strong>Zaguán Blade</strong>, with <strong>English</strong> and <strong>Spanish</strong> now available.</li>
|
||
<li>Updated to <strong>Vite 8</strong>.</li>
|
||
<li>Updated <strong>CodeMirror</strong> modules to their latest versions.</li>
|
||
<li>Updated many outdated <strong>Rust crates</strong>.</li>
|
||
<li>Replaced a select few commands with built-in commands for better cross-OS compatibility.</li>
|
||
<li><strong>Zaguán Blade.</strong> Disabled a lot more debug output throughout the app.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Made the <code>symbol_*</code> tools first-class citizens.</li>
|
||
<li><strong>Harness.</strong> Continued strengthening the harness across many levels. Testing is still needed.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">🐛</span>
|
||
Bug Fixes
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Tool Calls.</strong> Fixed a bug where the final response could arrive above a <code>run_command</code> tool call.</li>
|
||
<li><strong>Blade Terminal.</strong> Fixed a bug where extra text would sometimes precede the command from <code>run_command</code>.</li>
|
||
<li><strong>Release Audit.</strong> Completed a final release audit and fixed several lingering issues, including removing the old Chat implementation.</li>
|
||
<li><strong>Chat Panel.</strong> Fixed Markdown rendering so messages feel more fluid and natural.</li>
|
||
<li><strong>Chat Input.</strong> Fixed a bug where the cursor was rendered at double the font size.</li>
|
||
<li><strong>Editor.</strong> Fixed the font color of inactive line numbers in the gutter to be brighter and more visible.</li>
|
||
<li><strong>Diff View.</strong> Fixed a regression in the editor Diff View.</li>
|
||
<li><strong>Image Attachments.</strong> Fixed a bug where attached images would not be correctly sent to the model.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- v0.4.1 Section -->
|
||
<section id="v0-4-1" class="changelog-section">
|
||
<div class="container">
|
||
<div class="version-card version-previous">
|
||
<div class="version-header">
|
||
<div class="version-info">
|
||
<h2 class="version-number">v0.4.1</h2>
|
||
<span class="version-date">March 18, 2026</span>
|
||
</div>
|
||
<span class="version-badge badge-previous">Previous</span>
|
||
</div>
|
||
|
||
<div class="version-content">
|
||
<div class="version-resume">
|
||
<p>This release focuses on removing friction from first-time usage and clarifying the app's setup flow.</p>
|
||
</div>
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
Enhancements
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Zaguán Coder Daemon.</strong> Introducing GPT-5.4-Mini with Low and Medium reasoning.</li>
|
||
<li><strong>Local AI.</strong> It is now possible to try and use Zaguán Blade with Local AI models.</li>
|
||
<li><strong>First-Run Experience.</strong> Improved the onboarding flow with Local AI as a no-setup option.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">🐛</span>
|
||
Bug Fixes
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Tool Calls.</strong> Fixed the issue where tool calls would always appear at the top of the conversation instead of inline where they belong.</li>
|
||
<li><strong>Setup Flow.</strong> Removed the blocking setup dialog that prevented users from exploring the app.</li>
|
||
<li><strong>Messaging.</strong> Clarified the messaging around Local vs Cloud usage.</li>
|
||
<li><strong>UX & Copy.</strong> Various UX and copy improvements throughout the app.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Fixed a bug where we didn't catch the reasoning chunks correctly for the GLM-5 model.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Fixed a bug where the final response from MiniMax M2.5 and M2.7 was placed above the tool calls when it should be the last message in the conversation.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- v0.4.0 Section -->
|
||
<section id="v0-4-0" class="changelog-section">
|
||
<div class="container">
|
||
<div class="version-card version-previous">
|
||
<div class="version-header">
|
||
<div class="version-info">
|
||
<h2 class="version-number">v0.4.0</h2>
|
||
<span class="version-date">March 11, 2026</span>
|
||
</div>
|
||
<span class="version-badge badge-previous">Previous</span>
|
||
</div>
|
||
|
||
<div class="version-content">
|
||
<div class="version-resume">
|
||
<p>This release introduces significant improvements to Zaguán Blade, including a complete rewrite of the AI Chat Panel for better performance, new Code and Planning modes with a dedicated Planning skill, and theme support with four built-in themes. The update also includes numerous bug fixes, design refinements, and reduced debug output for a cleaner console experience.</p>
|
||
</div>
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
Enhancements
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Zaguán Coder Daemon.</strong> Implemented a new GPT skill inspired by <a href="https://github.com/cyxzdev/Uncodixfy" target="_blank" rel="noopener">Uncodixfy</a> and refined the other design skill.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Fixed streaming issues related to gpt-5.4.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Added a <code>tool_search</code> tool based on the <a href="https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool" target="_blank" rel="noopener">Anthropic documentation</a> to help reduce initial token usage.</li>
|
||
<li><strong>AI Chat Panel v2.</strong> A complete rewrite of the AI Chat panel. v2 is now a lot more performant and responsive.</li>
|
||
<li><strong>Chat Panel Update.</strong> Updated the Chat panel and took a lot of inspiration from <a href="https://github.com/pingdotgg/t3code" target="_blank" rel="noopener">T3 Code</a>.</li>
|
||
<li><strong>Git Commit Text Area.</strong> Made the Git commit text area bigger and dynamic.</li>
|
||
<li><strong>AI Chat Panel.</strong> Toned down the font color to make it easier to read.</li>
|
||
<li><strong>AI Chat Panel.</strong> Made completed tool calls fade a little to make it easier to separate.</li>
|
||
<li><strong>Editor Breadcrumb.</strong> Minor design tweak to the breadcrumb at the top of the editor for improved visual hierarchy.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
New Features
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Code and Planning Mode.</strong> You can now switch between Code and Planning mode. Added a special Planning skill in Zaguán Coder Daemon to go along with this new feature.</li>
|
||
<li><strong>Implement Button.</strong> Implemented an "Implement" button when in Planning mode. Clicking this switches to Code mode and begins the work.</li>
|
||
<li><strong>Themes.</strong> Added theme support with four built-in themes: the original dark theme Zaguán Dark plus Blade Coder, Blade Cream and Blade Robot.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">🎨</span>
|
||
Design Updates
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Theme Selector Dropdown.</strong> Tightened up and redesigned the design of the Theme selector dropdown menu.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">🐛</span>
|
||
Bug Fixes
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>AI Chat Conversation Order.</strong> Fixed a bug where responses and tool calls would not arrive and display in a natural conversation order.</li>
|
||
<li><strong>Git Push Lock Issue.</strong> Fixed a bug in the Git panel where a git push would complain about a git lock.</li>
|
||
<li><strong>Gitoxide Integration.</strong> Moved more Git functionality from git to gitoxide.</li>
|
||
<li><strong>Streaming Logic.</strong> Fixed a bug in the streaming logic that would sometimes garble the responses from specific models.</li>
|
||
<li><strong>GPT-5.4 Streaming.</strong> Fixed the streaming issue when using gpt-5.4 that resulted in garbled responses.</li>
|
||
<li><strong>Cancelled Tool Calls.</strong> Fixed an issue where a cancelled run_command tool call would end up below the response from the model.</li>
|
||
<li><strong>Chat UI.</strong> Removed noisy elements from the chat and tightened up some of them as well. Much nicer view.</li>
|
||
<li><strong>Git Commit Generate.</strong> Fixed a bug in the Git Commit Generate path that would sometimes fail for certain models.</li>
|
||
<li><strong>Git Commit Generator.</strong> Fixed the Git Commit generator to also check for/include new/staged files. This was missed before.</li>
|
||
<li><strong>Blade Terminal Rendering.</strong> Rewired the logic to use the Blade Terminal again and hopefully fixed the rendering bugs.</li>
|
||
<li><strong>AI Chat v2 Design.</strong> Made minor tweaks to the AI chat v2 design.</li>
|
||
<li><strong>Terminal Resize.</strong> Fixed the resize logic for the Terminal—previously wonky, now much smoother.</li>
|
||
<li><strong>Keyboard Shortcut.</strong> Added a new keyboard shortcut - Ctrl-L - to put the chat input in focus.</li>
|
||
<li><strong>Diff View Styling.</strong> Fixed Diff View styling across all 4 themes. The new themes were using the style from the original theme.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Fixed the Gemini continuation thinking bug.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Fixed bugs in relation to <code>tool_search</code> that would sometimes result in the model failing to apply patches and then overwrite files.</li>
|
||
<li><strong>Debug Output.</strong> Disabled a lot of debug output in the console.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<!-- v0.3.4 Section -->
|
||
<section id="v0-3-4" class="changelog-section">
|
||
<div class="container">
|
||
<div class="version-card version-previous">
|
||
<div class="version-header">
|
||
<div class="version-info">
|
||
<h2 class="version-number">v0.3.4</h2>
|
||
<span class="version-date">2026-03-05</span>
|
||
</div>
|
||
<span class="version-badge badge-previous">Previous</span>
|
||
</div>
|
||
|
||
<div class="version-content">
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
Enhancements
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Frontend Audit.</strong> Completed a full frontend audit: removed dead files, tightened up many functions, removed unused fonts, and made the codebase cleaner and leaner.</li>
|
||
<li><strong>i18n Preparation.</strong> Began preparing the application for internationalization (i18n); English is now ready.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Enabled parallel tool calling for supported models.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Added preliminary support for <a href="https://docs.mistral.ai/models/devstral-2-25-12" target="_blank" rel="noopener">Mistral Devstral 2</a>.</li>
|
||
<li><strong>Rust Backend.</strong> Did an audit of the Rust backend using the <a href="https://github.com/leonardomso/rust-skills" target="_blank" rel="noopener">Rust Skill</a>. Found and fixed a few bugs, memory optimizations and panic-prone locks.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Working on making the Mercury 2 system prompt stronger and better.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Replaced Gemini 3 Flash Preview with Gemini 3.1 Flash Lite Preview.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Initial testing support for <a href="https://www.inceptionlabs.ai/blog/introducing-mercury-2" target="_blank" rel="noopener">Inception Mercury 2</a>.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Enabled OpenAI GPT-5.4 with low and medium reasoning.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
New Features
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Zaguán Coder Daemon.</strong> Cherry-picked the best pieces from <a href="https://github.com/obra/superpowers" target="_blank" rel="noopener">Superpowers</a> and ported them to the GUI environment of Zaguán Blade.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">🐛</span>
|
||
Bug Fixes
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Run Command.</strong> Fixed a bug in the <code>run_command</code> card where the command would get detached when it shouldn't.</li>
|
||
<li><strong>Editor Colors.</strong> Fixed an issue where the editor did not show colors at all due to incompatible CodeMirror versions.</li>
|
||
<li><strong>Editor Scrollbar.</strong> Fixed an issue where the editor horizontal scrollbar was laid over the terminal.</li>
|
||
<li><strong>Layout Alignment.</strong> Fixed an alignment issue in the space between the editor and the chat.</li>
|
||
<li><strong>Chat Image Paste.</strong> Fixed a bug introduced after the audit where pasting images into chat no longer worked.</li>
|
||
<li><strong>Chat Streaming.</strong> Fixed a bug in the chat so that regular responses now stream correctly.</li>
|
||
<li><strong>Chat UI.</strong> Fixed the chat and removed a lot of noisy cards.</li>
|
||
<li><strong>New Chat Creation.</strong> Fixed a bug when creating a new chat where the model received no data at all.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Removed artificial limitation on the number of turns models could do.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Fixed a bug where the conversation wouldn't end properly, especially after repeated tool calls.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
<!-- v0.3.3 Section -->
|
||
<section id="v0-3-3" class="changelog-section">
|
||
<div class="container">
|
||
<div class="version-card version-previous">
|
||
<div class="version-header">
|
||
<div class="version-info">
|
||
<h2 class="version-number">v0.3.3</h2>
|
||
<span class="version-date">February 28, 2026</span>
|
||
</div>
|
||
<span class="version-badge badge-previous">Previous</span>
|
||
</div>
|
||
|
||
<div class="version-content">
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
Enhancements
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Markdown Editor.</strong> Show a proper Diff view and the Accept/Reject pill in the Markdown editor when it's in Edit mode after a model has made changes.</li>
|
||
<li><strong>Message Queue.</strong> Added a message queue so that you can send messages while the model works. These will be executed sequentially.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Working on ironing out bugs in several models, Gemini 3.1 Pro, MiniMax M2.5, GPT-5.3-Codex.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Disabled several variations of models in the `low` and `medium` ranges to clean up the list.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Used the <a href="https://developers.openai.com/cookbook/examples/gpt-5/codex_prompting_guide" target="_blank" rel="noopener">Codex guide</a> to make the implementation better.</li>
|
||
<li><strong>UI.</strong> Added the Project Name to the header and to the window title.</li>
|
||
<li><strong>Zaguán Blade.</strong> Now sending the local time and date to the model. This helps with year hallucinations and other time related issues.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Used gemini-cli source code to get the best information on how to handle it in the best possible manner.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Tightened up <code>grep_search</code> command with a timeout and excluding certain directories to speed things up.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
New Features
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Git Push.</strong> Pushing to Git now accepts all changes automatically.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">🐛</span>
|
||
Bug Fixes
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Zaguán Coder Daemon.</strong> Fixed a bug that resulted in a warning for the Gemini model. Did not affect functionality.</li>
|
||
<li><strong>Git Push.</strong> Fixed a bug in the Git Push button where it now correctly changes state from Push to Pushing to Pushed.</li>
|
||
<li><strong>Header Alignment.</strong> Fixed an alignment issue in the header where the app name was off-center when no tabs were open.</li>
|
||
<li><strong>Local AI.</strong> Fixed an issue where the responses would appear in reverse order.</li>
|
||
<li><strong>Terminal.</strong> Fixed the Terminal Copy command <code>Ctrl-Shift-C</code>/<code>Cmd-Shift-C</code>.</li>
|
||
<li><strong>UI Focus.</strong> Fixed a possible bug where the UI wouldn't get focus at launch due to the custom window decorations in Tauri.</li>
|
||
<li><strong>CodeMirror.</strong> Fixed a bug in the CodeMirror implementation that would show stale diff views.</li>
|
||
<li><strong>Terminal.</strong> Fixed a bug where pasting content into the Terminal would paste twice.</li>
|
||
<li><strong>Chat Panel.</strong> It's now possible to resize the chat panel again.</li>
|
||
<li><strong>Terminal.</strong> Removed the horizontal resize bar.</li>
|
||
<li><strong>Editor Test.</strong> Fixed a test case in the editor.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- v0.3.2 Section -->
|
||
<section id="v0-3-2" class="changelog-section">
|
||
<div class="container">
|
||
<div class="version-card">
|
||
<div class="version-header">
|
||
<div class="version-info">
|
||
<h2 class="version-number">v0.3.2</h2>
|
||
<span class="version-date">February 25, 2026</span>
|
||
</div>
|
||
<span class="version-badge badge-previous">Previous</span>
|
||
</div>
|
||
|
||
<div class="version-content">
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
Enhancements
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Project Index Tools.</strong> Added 2 new tools to retrieve the <code>project_index.md</code> file. This file can be used by the model to get an overview of the project.</li>
|
||
<li><strong>Editor Context.</strong> Send filenames of all open tabs in the editor to the AI model.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Dug through a few open-source projects to figure out the best way to make gpt-5.3-codex work seamlessly. A huge thanks to these very smart and talented people building awesome tools.</li>
|
||
<li><strong>OpenAI integration.</strong> OpenAI GPT-5.3-Codex is now available in Zaguán Blade.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Tightened up the logic for Google Gemini 3.1 Pro. TTFT now 4-5x faster.</li>
|
||
<li><strong>Git Panel.</strong> Enhanced Git Panel to show a strikethrough for elements that are moved, renamed or deleted.</li>
|
||
<li><strong>Chat.</strong> Added visual feedback while waiting for the model to respond in the chat.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">🐛</span>
|
||
Bug Fixes
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>GPT Codex.</strong> Fixed a bug where, sometimes, GPT Codex model would emit characters from other languages seemingly at random.</li>
|
||
<li><strong>GPT Codex.</strong> Fixed a bug where gpt-5.3-codex would stop after a few tool calls.</li>
|
||
<li><strong>Patching.</strong> Fixed a bug in <code>apply_patch_to_string</code> that would replace instead of add new content.</li>
|
||
<li><strong>Local AI.</strong> Fixed a bug in the Git commit generation for Local AI where it would fail. This was due to the message being routed wrong.</li>
|
||
<li><strong>Welcome screen.</strong> Fixed alignment issue on the Welcome screen.</li>
|
||
<li><strong>Paste image.</strong> Fixed a bug where pasting images from clipboard into chat didn't work.</li>
|
||
<li><strong>Tab focus.</strong> Active tab now always stays in focus while new tabs are opening.</li>
|
||
<li><strong>Git.</strong> Fixed a bug where the <code>.zblade</code> directory would be submitted to git.</li>
|
||
<li><strong>Chat.</strong> Fixed a bug where images attached to a message were being re-sent on every subsequent turn, causing context bloat.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- v0.3.1 Section -->
|
||
<section id="v0-3-1" class="changelog-section">
|
||
<div class="container">
|
||
<div class="version-card">
|
||
<div class="version-header">
|
||
<div class="version-info">
|
||
<h2 class="version-number">v0.3.1</h2>
|
||
<span class="version-date">February 23, 2026</span>
|
||
</div>
|
||
<span class="version-badge badge-previous">Previous</span>
|
||
</div>
|
||
|
||
<div class="version-content">
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
Enhancements
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Zaguán Coder Daemon.</strong> Added stronger detection for Google Gemini if it was unable to apply a patch to help it recover and try again instead of hanging.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Added a runtime guard to prevent AI models from inappropriately using shell commands (e.g., <code>grep</code>, <code>cat</code>) instead of dedicated tools, automatically guiding them to correct usage.</li>
|
||
<li><strong>Dependencies.</strong> Updated modules for frontend and backend.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">🐛</span>
|
||
Bug Fixes
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Research Progress.</strong> Fixed an issue where research progress indicators (like "RUNNING_TOOLS") would remain stuck in a running state when a chat session ended or was stopped.</li>
|
||
<li><strong>Run Command.</strong> Fixed a bug in Zaguán Blade where a Run Command, when skipped, would still stay running.</li>
|
||
<li><strong>Run Command.</strong> Fixed a bug when the Stop button was pressed and a Run Command was running and would stay running.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- v0.3.0 Section -->
|
||
<section id="v0-3-0" class="changelog-section">
|
||
<div class="container">
|
||
<div class="version-card">
|
||
<div class="version-header">
|
||
<div class="version-info">
|
||
<h2 class="version-number">v0.3.0</h2>
|
||
<span class="version-date">February 23, 2026</span>
|
||
</div>
|
||
<span class="version-badge badge-previous">Previous</span>
|
||
</div>
|
||
|
||
<div class="version-content">
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
New Features
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Alpha Tag Removed.</strong> Removed the "alpha" tag as Zaguán Blade has reached a usable state.</li>
|
||
<li><strong>UI Redesign.</strong> Redesigned the whole application. It's now a lot more professional, calm and better structured.</li>
|
||
<li><strong>Settings.</strong> Added an About section in Settings.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
Enhancements
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Performance.</strong> Fixed memory leaks, optimized for better performance and cleaned up the code a little.</li>
|
||
<li><strong>Editor Performance.</strong> Significantly improved editor responsiveness by splitting context state and actions to eliminate unnecessary re-renders in hot-path components.</li>
|
||
<li><strong>Markdown Performance.</strong> Improved typing responsiveness in Markdown files by disabling expensive syntax features and skipping per-keystroke cursor synchronization.</li>
|
||
<li><strong>Google Gemini 3.1 Pro.</strong> Trying to make Google Gemini 3.1. Pro work better based on feedback and other OSS projects.</li>
|
||
<li><strong>Google Gemini.</strong> Updated our Google Gemini implementation in Zaguán Coder Daemon.</li>
|
||
<li><strong>MiniMax.</strong> Updated our MiniMax implementation for Fireworks in Zaguán Coder Daemon.</li>
|
||
<li><strong>Dependencies.</strong> Updated <code>gix</code> to v0.51.0.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">🐛</span>
|
||
Bug Fixes
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Diff parsing.</strong> Fixed line-number drift in the editor caused by newline metadata.</li>
|
||
<li><strong>Uncommitted changes.</strong> Fixed cumulative diff tracking to properly display changes for files edited multiple times.</li>
|
||
<li><strong>Fixed a bug</strong> in the global Accept All/Reject All that was wrongly removed.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- v0.2.1 Section -->
|
||
<section id="v0-2-1" class="changelog-section">
|
||
<div class="container">
|
||
<div class="version-card">
|
||
<div class="version-header">
|
||
<div class="version-info">
|
||
<h2 class="version-number">v0.2.1</h2>
|
||
<span class="version-date">February 21, 2026</span>
|
||
</div>
|
||
<span class="version-badge badge-previous">Previous</span>
|
||
</div>
|
||
|
||
<div class="version-content">
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
New Features
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Google Gemini 3.1 Pro.</strong> Added Google Gemini 3.1 Pro in Zaguán Coder Daemon.</li>
|
||
<li><strong>Chunk counting.</strong> Added chunk counting and display for write operations tool calls.</li>
|
||
<li><strong>Qwen3.5 support.</strong> Added support for Qwen3.5 models in Zaguán Coder Daemon.</li>
|
||
<li><strong>Claude Sonnet 4.6.</strong> Enabled Claude Sonnet 4.6 in Zaguán Coder Daemon. Restart application to access it.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
Enhancements
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Performance.</strong> Optimized streaming performance and conversation context synchronization.</li>
|
||
<li><strong>Frontend.</strong> Updated Vite to version 7.3.1.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">🐛</span>
|
||
Bug Fixes
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Zaguán Coder Daemon provider fix.</strong> Fixed an issue where Anthropic-specific instructions were being sent to non-Anthropic providers.</li>
|
||
<li><strong>Fixed a bug</strong> when using Gemini 3.1 Pro where extra text would appear when using the <code>run_command</code> tool.</li>
|
||
<li><strong>Fixed a bug</strong> when <code>run_command</code> started a command without exit that blocked progress.</li>
|
||
<li><strong>Diff parsing.</strong> Fixed an issue where Diff parsing was only reading the first parsed patch block.</li>
|
||
<li><strong>Fixed a warning message</strong> that was too prominent.</li>
|
||
<li><strong>Fixed escaped characters</strong> showing up in the Blade Terminal.</li>
|
||
<li><strong>Fixed terminal crash</strong> with dead-key characters.</strong> Resolved UTF-8 unsafe slicing in sentinel parsing that caused crashes with multibyte characters (e.g., <code>~/dead-key</code> sequences). ANSI stripping now preserves UTF-8 bytes correctly.</li>
|
||
<li><strong>Fixed a bug</strong> where the global Accept All/Accept All didn't hide if Accept changes on file was triggered.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- v0.2.0 Section -->
|
||
<section id="v0-2-0" class="changelog-section">
|
||
<div class="container">
|
||
<div class="version-card">
|
||
<div class="version-header">
|
||
<div class="version-info">
|
||
<h2 class="version-number">v0.2.0</h2>
|
||
<span class="version-date">February 16, 2026</span>
|
||
</div>
|
||
<span class="version-badge badge-previous">Previous</span>
|
||
</div>
|
||
|
||
<div class="version-content">
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
Enhancements
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li>When selecting a screenshot, added a half-second delay before capturing to allow time for UI elements (like window selection boxes) to disappear.</li>
|
||
<li><strong>Git performance.</strong> Replaced most external <code>git</code> calls with <code>gix</code> for faster, more efficient Git operations.</li>
|
||
<li><strong>Git Commit message.</strong> Now uses the full git commit message instead of just the first line.</li>
|
||
<li><strong>Local AI refactoring.</strong> Refactored Local AI so that it's separate from the main AI flow for easier maintenance.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
New Features
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Brand new App Icon.</strong> Redesigned app icon with a fresh, modern look.</li>
|
||
<li><strong>Git graph visualization.</strong> Implemented a Git graph of the 50 latest commits with a details popup for viewing commit information.</li>
|
||
<li><strong>Ollama Cloud support.</strong> Added support for Ollama Cloud. Requires an account at ollama.com.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">🐛</span>
|
||
Bug Fixes
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li>Fixed text disappearing or flickering when sending new messages after loading a conversation from history.</li>
|
||
<li>Fixed scroll not going to bottom when loading an existing conversation from history.</li>
|
||
<li>**CodeMirror "Ranges must be added sorted" crash.** Three extensions could add decorations in unsorted order causing CodeMirror to crash:
|
||
<ul style="margin-top: 0.5rem; margin-left: 1rem; list-style: disc;">
|
||
<li><code>diffDecorations.ts</code> — Sort was <code>(from, to)</code> but CodeMirror requires <code>(from, startSide, to)</code>. Fixed by tracking <code>startSide</code> on each decoration and sorting by <code>(from, startSide, to)</code>.</li>
|
||
<li><code>rainbowBrackets.ts</code> — Visible ranges expanded to line boundaries could overlap, causing duplicate/unsorted bracket decorations. Fixed by tracking <code>maxProcessed</code> to skip already-processed positions and sorting all brackets before adding.</li>
|
||
<li><code>indentGuides.ts</code> — Same overlapping visible ranges risk. Fixed with <code>maxProcessed</code> guard.</li>
|
||
<li><strong>Chat UI.</strong> Fixed the chat and removed a lot of noisy cards.</li>
|
||
<li><strong>New Chat Creation.</strong> Fixed a bug when creating a new chat where the model received no data at all.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Removed artificial limitation on the number of turns models could do.</li>
|
||
<li><strong>Chat UI.</strong> Fixed the chat and removed a lot of noisy cards.</li>
|
||
<li><strong>New Chat Creation.</strong> Fixed a bug when creating a new chat where the model received no data at all.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Removed artificial limitation on the number of turns models could do.</li>
|
||
</ul>
|
||
<li><strong>Chat UI.</strong> Fixed the chat and removed a lot of noisy cards.</li>
|
||
<li><strong>New Chat Creation.</strong> Fixed a bug when creating a new chat where the model received no data at all.</li>
|
||
<li><strong>Zaguán Coder Daemon.</strong> Removed artificial limitation on the number of turns models could do.</li>
|
||
</li>
|
||
<li><strong>Chat becomes inert after UI reload.</strong> After a UI reload (e.g. crash recovery), the frontend's <code>loading</code> state was <code>false</code> even though the backend was still streaming. Added <code>get_chat_status</code> Tauri command that returns <code>true</code> if the backend is streaming. Frontend <code>init()</code> now calls <code>get_chat_status</code> and restores <code>loading = true</code> if the backend is still active. <em>Files: <code>chat.rs</code>, <code>lib.rs</code>, <code>useChat.ts</code></em></li>
|
||
<li><strong>Can't scroll to bottom after crash/reload.</strong> After reload, the scroll container starts at the top. The <code>isUserAtBottomRef</code> quickly becomes <code>false</code> from the scroll handler, so streaming auto-scroll stops working. Added an initial scroll-to-bottom effect that fires once when messages first load, ensuring the user sees the latest content and <code>isUserAtBottomRef</code> stays <code>true</code> for streaming auto-scroll. <em>Files: <code>ChatPanel.tsx</code></em></li>
|
||
<li>Fixed the Blade Terminal echo bug when the model is using the <code>run_command</code> tool call.</li>
|
||
<li>Fixed <code>run_command</code> tool calls in AI Chat appearing above already run (or failed) commands instead of below them.</li>
|
||
<li>Fixed bug in the Ollama and Ollama Cloud implementation that resulted in errors.</li>
|
||
<li><strong>Diff view showing up on wrong lines.</strong> Fixed issue where diff view would appear on incorrect lines due to stale data in the editor. Added proper cleanup and state invalidation when editor content changes. <em>Files: <code>DiffView.tsx</code>, <code>EditorPane.tsx</code></em></li>
|
||
<li><strong>Model selector sluggishness.</strong> Reduced avoidable work in the compact selector by memoizing derived lists and selected model. Removed delayed/smooth scroll on open (which can feel laggy) and switched to <code>requestAnimationFrame</code> + instant nearest scroll. <em>Files: <code>CompactModelSelector.tsx</code></em></li>
|
||
<li><strong>History titles missing.</strong> Added a resilient fallback title strategy: use <code>conversation.title</code> if present, else use <code>preview</code>, else synthesize from last active timestamp (<code>Conversation X ago</code>). <em>Files: <code>HistoryTab.tsx</code></em></li>
|
||
<li><strong>Natural chat autoscroll + user can interrupt with wheel.</strong> Reworked autoscroll to use the real scroll container ref. Split behavior: scroll on new message if user is at bottom / just sent; during streaming, only keep following while user remains at bottom. This preserves manual scroll interruption. <em>Files: <code>ChatPanel.tsx</code></em></li>
|
||
<li><strong>Settings save feels slow.</strong> Changed save flow to close modal immediately, then persist in background. Keeps UI responsive while save + model refresh continue asynchronously. <em>Files: <code>SettingsModal.tsx</code></em></li>
|
||
<li><strong>General snappiness + launch flicker.</strong> Removed duplicate no-tab editor rendering path that could cause visual churn. Tightened startup flow to show window after first frame and fade out loading overlay immediately (no extra nested delays). <em>Files: <code>Layout.tsx</code>, <code>main.tsx</code></em></li>
|
||
<li><strong>Modernized title bar buttons.</strong> Updated window controls to compact rounded buttons with tighter spacing and better active feedback. <em>Files: <code>TitleBar.tsx</code></em></li>
|
||
<li><strong>Terminal too close to sidebar shadow.</strong> Increased left padding in terminal content area. <em>Files: <code>TerminalPane.tsx</code></em></li>
|
||
<li><strong>Fixed crash in read_file_range on out-of-bounds slice.</strong> Added bounds clamping to prevent panic when requesting lines beyond EOF (e.g., start_line: 350 on a 259-line file). Now returns safe empty output for extreme or inverted ranges instead of crashing.</li>
|
||
<li><strong>Fixed reasoning blocks being dropped during final answer transition.</strong> Changed filter logic to preserve reasoning blocks when clearing stale text content. <em>Files: <code>useChat.ts</code></em></li>
|
||
<li><strong>Fixed caret sync issues in Command Center textarea.</strong> Added shared autosize helper for consistent height updates and implemented explicit <code>Shift+Enter</code> newline insertion with proper caret position restoration. <em>Files: <code>CommandCenter.tsx</code></em></li>
|
||
</ul>
|
||
</div>
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">📦</span>
|
||
Dependencies Updated
|
||
</h3>
|
||
<p class="updates-intro">Comprehensive dependency upgrade across frontend and Rust ecosystem.</p>
|
||
<table class="updates-table">
|
||
<thead>
|
||
<tr>
|
||
<th>Package</th>
|
||
<th>From</th>
|
||
<th>To</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code>@codemirror/commands</code></td>
|
||
<td>6.10.1</td>
|
||
<td>6.10.2</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>@codemirror/lint</code></td>
|
||
<td>6.9.2</td>
|
||
<td>6.9.3</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>@codemirror/view</code></td>
|
||
<td>6.39.11</td>
|
||
<td>6.39.13</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>@tauri-apps/api</code></td>
|
||
<td>2.9.1</td>
|
||
<td>2.10.1</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>@tauri-apps/cli</code></td>
|
||
<td>2.9.6</td>
|
||
<td>2.10.0</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>@tauri-apps/plugin-shell</code></td>
|
||
<td>2.3.4</td>
|
||
<td>2.3.5</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>i18next</code></td>
|
||
<td>25.8.0</td>
|
||
<td>25.8.4</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>pdfjs-dist</code></td>
|
||
<td>5.4.530</td>
|
||
<td>5.4.624</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>@types/react</code></td>
|
||
<td>19.2.10</td>
|
||
<td>19.2.13</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>@vitejs/plugin-react</code></td>
|
||
<td>5.1.2</td>
|
||
<td>5.1.4</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<h4 class="subsection-title">Rust Crates - Safe Updates</h4>
|
||
<table class="updates-table">
|
||
<thead>
|
||
<tr>
|
||
<th>Crate</th>
|
||
<th>From</th>
|
||
<th>To</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code>clap</code></td>
|
||
<td>4.5.54</td>
|
||
<td>4.5.57</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>regex</code></td>
|
||
<td>1.12.2</td>
|
||
<td>1.12.3</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>tempfile</code></td>
|
||
<td>3.24.0</td>
|
||
<td>3.25.0</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>uuid</code></td>
|
||
<td>1.19.0</td>
|
||
<td>1.20.0</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<h4 class="subsection-title">Rust Crates - Breaking Updates</h4>
|
||
<ul class="breaking-updates-list">
|
||
<li>
|
||
<strong><code>tauri</code> (2.9.5 → 2.10.2)</strong>
|
||
<br><span class="update-detail">No code changes required. Unblocked plugin support and JavaScript improvements.</span>
|
||
</li>
|
||
<li>
|
||
<strong><code>tree-sitter</code> (0.24 → 0.26)</strong>
|
||
<br><span class="update-detail">Updated <code>node.child(i)</code> to <code>node.child(i as u32)</code> to match new API.</span>
|
||
</li>
|
||
<li>
|
||
<strong><code>notify</code> (6.1.1 → 8.2.0)</strong>
|
||
<br><span class="update-detail">No code changes required. API remains compatible.</span>
|
||
</li>
|
||
<li>
|
||
<strong><code>reqwest</code> (0.12.28 → 0.13.2)</strong>
|
||
<br><span class="update-detail">Removed <code>rustls-tls</code> feature (now default in new version).</span>
|
||
</li>
|
||
<li>
|
||
<strong><code>rusqlite</code> (0.32 → 0.38)</strong>
|
||
<br><span class="update-detail">No code changes required. API remains compatible.</span>
|
||
</li>
|
||
<li>
|
||
<strong><code>tokio-tungstenite</code> (0.21 → 0.28)</strong>
|
||
<br><span class="update-detail"><code>WebSocketConfig</code> now mutable default. <code>Message::Text</code> and <code>Message::Ping</code> take <code>Utf8Bytes</code> and <code>Bytes</code> respectively (converted using <code>.into()</code>).</span>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- v0.1.1 Section -->
|
||
<section id="v0-1-1" class="changelog-section">
|
||
<div class="container">
|
||
<div class="version-card version-latest">
|
||
<div class="version-header">
|
||
<div class="version-info">
|
||
<h2 class="version-number">v0.1.1</h2>
|
||
<span class="version-date">February 9, 2026</span>
|
||
</div>
|
||
<span class="version-badge badge-previous">Previous</span>
|
||
</div>
|
||
|
||
<div class="version-content">
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
New Features
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>PDF support.</strong> The editor can now load PDFs natively.</li>
|
||
<li><strong>Screenshot support.</strong> Capture window or select region and attach to chat.</li>
|
||
<li><strong>Upload image.</strong> Upload images directly to chat.</li>
|
||
<li><strong>Paste image.</strong> Paste images from clipboard into chat.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">✨</span>
|
||
Enhancements
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li><strong>Git implementation is now complete.</strong> Full Git integration ready for use.</li>
|
||
<li><strong>Added tooltips</strong> on the buttons in the sidebar.</li>
|
||
<li><strong>Adjustments in the status bar.</strong> Improved status bar layout and information.</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="changes-section">
|
||
<h3 class="changes-title">
|
||
<span class="changes-icon">🐛</span>
|
||
Bug Fixes
|
||
</h3>
|
||
<ul class="changes-list">
|
||
<li>Fixed the Blade Terminal input and output where it used to show escape characters.</li>
|
||
<li>Fixed issue where the chat would sometimes show garbled response.</li>
|
||
<li>Hide Search icon because functionality not yet implemented.</li>
|
||
<li>Open tab now shows the Close button.</li>
|
||
<li>After closing a tab, go to the previously open tab.</li>
|
||
<li>Plus many bug fixes.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- v0.1.0 Section -->
|
||
<section id="v0-1-0" class="changelog-section section-alt">
|
||
<div class="container">
|
||
<div class="version-card">
|
||
<div class="version-header">
|
||
<div class="version-info">
|
||
<h2 class="version-number">v0.1.0</h2>
|
||
<span class="version-date">February 4, 2026</span>
|
||
</div>
|
||
<span class="version-badge badge-initial">Initial</span>
|
||
</div>
|
||
|
||
<div class="version-content">
|
||
<div class="initial-release">
|
||
<div class="initial-icon">🚀</div>
|
||
<p class="initial-text">
|
||
The very first release of Zaguán Blade. This marks the beginning of our journey to create the ultimate AI-native code editor.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
</BaseLayout>
|
||
|
||
<script is:inline>
|
||
const changelogSections = document.querySelectorAll('.changes-section');
|
||
|
||
changelogSections.forEach((section, index) => {
|
||
const title = section.querySelector('.changes-title');
|
||
const list = section.querySelector('.changes-list');
|
||
|
||
if (!(title instanceof HTMLElement) || !(list instanceof HTMLElement)) {
|
||
return;
|
||
}
|
||
|
||
const itemCount = list.querySelectorAll(':scope > li').length;
|
||
const listId = `changes-list-${index + 1}`;
|
||
const toggle = document.createElement('button');
|
||
const titleContent = document.createElement('span');
|
||
const meta = document.createElement('span');
|
||
const count = document.createElement('span');
|
||
const chevron = document.createElement('span');
|
||
|
||
toggle.type = 'button';
|
||
toggle.className = 'changes-title changes-toggle';
|
||
toggle.setAttribute('aria-expanded', 'false');
|
||
toggle.setAttribute('aria-controls', listId);
|
||
|
||
titleContent.className = 'changes-toggle-main';
|
||
while (title.firstChild) {
|
||
titleContent.appendChild(title.firstChild);
|
||
}
|
||
|
||
meta.className = 'changes-toggle-meta';
|
||
count.className = 'changes-count';
|
||
count.textContent = `(${itemCount})`;
|
||
|
||
chevron.className = 'changes-chevron';
|
||
chevron.setAttribute('aria-hidden', 'true');
|
||
chevron.textContent = '▸';
|
||
|
||
meta.append(count, chevron);
|
||
toggle.append(titleContent, meta);
|
||
|
||
list.id = listId;
|
||
list.hidden = true;
|
||
|
||
toggle.addEventListener('click', () => {
|
||
const isExpanded = toggle.getAttribute('aria-expanded') === 'true';
|
||
const nextExpanded = !isExpanded;
|
||
|
||
toggle.setAttribute('aria-expanded', String(nextExpanded));
|
||
list.hidden = !nextExpanded;
|
||
section.classList.toggle('changes-section-open', nextExpanded);
|
||
chevron.textContent = nextExpanded ? '▾' : '▸';
|
||
});
|
||
|
||
title.replaceWith(toggle);
|
||
});
|
||
</script>
|
||
|
||
<style>
|
||
/* Changelog Page Specific Styles */
|
||
|
||
/* Hero */
|
||
.changelog-hero {
|
||
min-height: 35vh;
|
||
display: flex;
|
||
align-items: center;
|
||
padding-top: calc(var(--space-2xl) + 60px);
|
||
padding-bottom: var(--space-lg);
|
||
background: linear-gradient(180deg, var(--color-bg) 0%, var(--color-bg-secondary) 100%);
|
||
border-bottom: 1px solid var(--color-border);
|
||
}
|
||
|
||
.changelog-hero .hero-content {
|
||
max-width: 800px;
|
||
}
|
||
|
||
.hero-label {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.875rem;
|
||
color: var(--color-accent);
|
||
letter-spacing: 0.1em;
|
||
margin-bottom: var(--space-sm);
|
||
}
|
||
|
||
.hero-title {
|
||
margin-bottom: var(--space-md);
|
||
}
|
||
|
||
.title-line-1 {
|
||
display: block;
|
||
font-size: clamp(2rem, 6vw, 3.5rem);
|
||
font-weight: 900;
|
||
line-height: 0.95;
|
||
letter-spacing: -0.03em;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
.title-accent {
|
||
display: block;
|
||
font-size: clamp(1rem, 2.5vw, 1.25rem);
|
||
font-weight: 700;
|
||
color: var(--color-accent);
|
||
font-family: var(--font-mono);
|
||
margin-top: 0.25rem;
|
||
letter-spacing: 0.05em;
|
||
}
|
||
|
||
.hero-description {
|
||
font-size: 1rem;
|
||
color: var(--color-text-secondary);
|
||
line-height: 1.6;
|
||
max-width: 600px;
|
||
}
|
||
|
||
/* Changelog Sections */
|
||
.changelog-section {
|
||
padding: var(--space-xl) 0;
|
||
}
|
||
|
||
.changelog-section[id] {
|
||
scroll-margin-top: calc(var(--space-2xl) + 80px);
|
||
}
|
||
|
||
.section-alt {
|
||
background: var(--color-bg-secondary);
|
||
}
|
||
|
||
/* Version Cards */
|
||
.version-card {
|
||
background: var(--color-bg);
|
||
border: 1px solid var(--color-border);
|
||
padding: var(--space-lg);
|
||
position: relative;
|
||
}
|
||
|
||
.version-latest {
|
||
border-color: var(--color-accent);
|
||
background: linear-gradient(135deg, var(--color-bg-elevated) 0%, var(--color-bg) 100%);
|
||
}
|
||
|
||
.version-latest::before {
|
||
content: '';
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
width: 4px;
|
||
height: 100%;
|
||
background: var(--color-accent);
|
||
}
|
||
|
||
/* Version Header */
|
||
.version-header {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
margin-bottom: var(--space-lg);
|
||
padding-bottom: var(--space-md);
|
||
border-bottom: 1px solid var(--color-border);
|
||
flex-wrap: wrap;
|
||
gap: var(--space-sm);
|
||
}
|
||
|
||
.version-info {
|
||
display: flex;
|
||
align-items: baseline;
|
||
gap: var(--space-md);
|
||
flex-wrap: wrap;
|
||
}
|
||
|
||
.version-number {
|
||
font-size: 1.75rem;
|
||
font-weight: 900;
|
||
text-transform: uppercase;
|
||
letter-spacing: -0.02em;
|
||
color: var(--color-text);
|
||
}
|
||
|
||
.version-date {
|
||
font-family: var(--font-mono);
|
||
font-size: 1rem;
|
||
color: var(--color-text-secondary);
|
||
letter-spacing: 0.05em;
|
||
}
|
||
|
||
.version-badge {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.7rem;
|
||
padding: 0.4rem 0.8rem;
|
||
font-weight: 700;
|
||
letter-spacing: 0.1em;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
.badge-latest {
|
||
background: var(--color-accent);
|
||
color: var(--color-bg);
|
||
}
|
||
|
||
.badge-initial {
|
||
background: var(--color-bg-elevated);
|
||
color: var(--color-text-secondary);
|
||
border: 1px solid var(--color-border);
|
||
}
|
||
|
||
.badge-previous {
|
||
background: var(--color-bg-elevated);
|
||
color: var(--color-text-secondary);
|
||
border: 1px solid var(--color-border);
|
||
}
|
||
|
||
.version-development {
|
||
border-color: #f59e0b;
|
||
background: linear-gradient(135deg, var(--color-bg-elevated) 0%, var(--color-bg) 100%);
|
||
}
|
||
|
||
.version-development::before {
|
||
content: '';
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
width: 4px;
|
||
height: 100%;
|
||
background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
|
||
}
|
||
|
||
.badge-development {
|
||
background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
|
||
color: var(--color-bg);
|
||
}
|
||
|
||
/* Version Content */
|
||
.version-content {
|
||
display: grid;
|
||
gap: var(--space-lg);
|
||
}
|
||
|
||
/* Changes Section */
|
||
.changes-section {
|
||
position: relative;
|
||
overflow: hidden;
|
||
background: linear-gradient(180deg, var(--color-bg) 0%, var(--color-bg-elevated) 100%);
|
||
border: 1px solid var(--color-border);
|
||
border-left: 2px solid transparent;
|
||
padding: var(--space-md);
|
||
transition: border-color 0.2s ease, background-color 0.2s ease, transform 0.2s ease;
|
||
}
|
||
|
||
.changes-section:hover {
|
||
border-color: var(--color-accent);
|
||
transform: translateY(-1px);
|
||
}
|
||
|
||
.changes-section-open {
|
||
border-color: var(--color-accent);
|
||
border-left-color: var(--color-accent);
|
||
background: linear-gradient(180deg, var(--color-bg-elevated) 0%, var(--color-bg) 100%);
|
||
}
|
||
|
||
.version-latest .changes-section {
|
||
background: linear-gradient(180deg, var(--color-bg-secondary) 0%, var(--color-bg-elevated) 100%);
|
||
}
|
||
|
||
.version-latest .changes-section-open {
|
||
background: linear-gradient(180deg, var(--color-bg-secondary) 0%, var(--color-bg) 100%);
|
||
}
|
||
|
||
/* Updates Tables */
|
||
.updates-intro {
|
||
color: var(--color-text-secondary);
|
||
margin-bottom: var(--space-md);
|
||
font-size: 0.95rem;
|
||
}
|
||
|
||
.subsection-title {
|
||
font-size: 0.9rem;
|
||
font-weight: 700;
|
||
color: var(--color-text);
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.05em;
|
||
margin-top: var(--space-md);
|
||
margin-bottom: var(--space-sm);
|
||
font-family: var(--font-mono);
|
||
}
|
||
|
||
.updates-table {
|
||
width: 100%;
|
||
border-collapse: collapse;
|
||
margin-bottom: var(--space-md);
|
||
font-size: 0.9rem;
|
||
}
|
||
|
||
.updates-table thead {
|
||
background: var(--color-bg-elevated);
|
||
border-bottom: 2px solid var(--color-border);
|
||
}
|
||
|
||
.updates-table th {
|
||
padding: var(--space-xs) var(--space-sm);
|
||
text-align: left;
|
||
font-weight: 700;
|
||
color: var(--color-text);
|
||
font-family: var(--font-mono);
|
||
font-size: 0.8rem;
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.05em;
|
||
}
|
||
|
||
.updates-table td {
|
||
padding: var(--space-xs) var(--space-sm);
|
||
border-bottom: 1px solid var(--color-border);
|
||
color: var(--color-text-secondary);
|
||
}
|
||
|
||
.updates-table code {
|
||
background: var(--color-bg-elevated);
|
||
padding: 0.2rem 0.4rem;
|
||
border-radius: 0.25rem;
|
||
font-family: var(--font-mono);
|
||
color: var(--color-accent);
|
||
font-size: 0.9em;
|
||
}
|
||
|
||
.breaking-updates-list {
|
||
list-style: none;
|
||
margin-top: var(--space-md);
|
||
}
|
||
|
||
.breaking-updates-list li {
|
||
padding: var(--space-sm);
|
||
margin-bottom: var(--space-sm);
|
||
background: var(--color-bg-elevated);
|
||
border-left: 3px solid var(--color-accent);
|
||
border-radius: 0.25rem;
|
||
}
|
||
|
||
.breaking-updates-list strong {
|
||
color: var(--color-text);
|
||
font-family: var(--font-mono);
|
||
display: block;
|
||
margin-bottom: 0.25rem;
|
||
}
|
||
|
||
.breaking-updates-list code {
|
||
background: var(--color-bg);
|
||
padding: 0.2rem 0.4rem;
|
||
border-radius: 0.25rem;
|
||
font-family: var(--font-mono);
|
||
color: var(--color-accent);
|
||
font-size: 0.9em;
|
||
}
|
||
|
||
.update-detail {
|
||
font-size: 0.9rem;
|
||
color: var(--color-text-secondary);
|
||
}
|
||
|
||
.changes-title {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: var(--space-xs);
|
||
font-size: 0.92rem;
|
||
font-weight: 700;
|
||
text-transform: uppercase;
|
||
margin-bottom: var(--space-sm);
|
||
color: var(--color-accent);
|
||
font-family: var(--font-mono);
|
||
letter-spacing: 0.08em;
|
||
}
|
||
|
||
.changes-toggle {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
justify-content: flex-start;
|
||
flex-wrap: wrap;
|
||
width: auto;
|
||
max-width: 100%;
|
||
margin-bottom: 0;
|
||
padding: 0;
|
||
border: none;
|
||
background: none;
|
||
cursor: pointer;
|
||
text-align: left;
|
||
color: var(--color-accent);
|
||
font: inherit;
|
||
text-shadow: 0 0 14px rgba(34, 197, 94, 0.1);
|
||
transition: color 0.2s ease, opacity 0.2s ease;
|
||
}
|
||
|
||
.changes-toggle:hover {
|
||
color: var(--color-accent);
|
||
opacity: 0.92;
|
||
}
|
||
|
||
.changes-toggle:focus-visible {
|
||
outline: 1px solid var(--color-accent);
|
||
outline-offset: 5px;
|
||
}
|
||
|
||
.changes-toggle-main {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: 0.45rem;
|
||
min-width: 0;
|
||
}
|
||
|
||
.changes-toggle-meta {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: 0.45rem;
|
||
margin-left: 0.55rem;
|
||
flex-shrink: 0;
|
||
color: color-mix(in srgb, var(--color-accent) 78%, var(--color-text-secondary) 22%);
|
||
}
|
||
|
||
.changes-count {
|
||
color: currentColor;
|
||
font-size: 0.8rem;
|
||
letter-spacing: 0.04em;
|
||
opacity: 0.9;
|
||
}
|
||
|
||
.changes-chevron {
|
||
display: inline-block;
|
||
width: auto;
|
||
height: auto;
|
||
font-size: 0.85rem;
|
||
line-height: 1;
|
||
border: none;
|
||
border-radius: 0;
|
||
}
|
||
|
||
.changes-icon {
|
||
font-size: 1rem;
|
||
}
|
||
|
||
.changes-list {
|
||
list-style: none;
|
||
margin-top: var(--space-sm);
|
||
}
|
||
|
||
.changes-list li {
|
||
padding: 0.35rem 0;
|
||
border-bottom: 1px solid var(--color-border);
|
||
color: var(--color-text-secondary);
|
||
line-height: 1.5;
|
||
padding-left: var(--space-md);
|
||
position: relative;
|
||
}
|
||
|
||
.changes-list li:last-child {
|
||
border-bottom: none;
|
||
}
|
||
|
||
.changes-list li::before {
|
||
content: '›';
|
||
position: absolute;
|
||
left: 0;
|
||
color: var(--color-accent);
|
||
font-weight: 700;
|
||
}
|
||
|
||
.changes-list li strong {
|
||
color: var(--color-text);
|
||
}
|
||
|
||
.changes-list li a {
|
||
color: var(--color-accent);
|
||
text-decoration: underline;
|
||
text-underline-offset: 3px;
|
||
transition: color 0.2s ease;
|
||
}
|
||
|
||
.changes-list li a:hover {
|
||
color: var(--color-text);
|
||
}
|
||
|
||
/* Initial Release */
|
||
.initial-release {
|
||
text-align: center;
|
||
padding: var(--space-lg);
|
||
}
|
||
|
||
.initial-icon {
|
||
font-size: 3rem;
|
||
margin-bottom: var(--space-md);
|
||
}
|
||
|
||
.initial-text {
|
||
font-size: 1rem;
|
||
color: var(--color-text-secondary);
|
||
line-height: 1.6;
|
||
max-width: 600px;
|
||
margin: 0 auto;
|
||
}
|
||
|
||
/* Responsive */
|
||
@media (max-width: 768px) {
|
||
.changelog-hero {
|
||
min-height: auto;
|
||
padding-top: calc(var(--space-2xl) + 60px);
|
||
}
|
||
|
||
.version-header {
|
||
flex-direction: column;
|
||
align-items: flex-start;
|
||
}
|
||
|
||
.version-info {
|
||
flex-direction: column;
|
||
gap: var(--space-xs);
|
||
}
|
||
|
||
.version-number {
|
||
font-size: 1.75rem;
|
||
}
|
||
|
||
.changes-toggle {
|
||
align-items: flex-start;
|
||
gap: 0;
|
||
}
|
||
|
||
.changes-toggle-main {
|
||
flex: initial;
|
||
}
|
||
|
||
.changes-toggle-meta {
|
||
margin-left: 0.35rem;
|
||
}
|
||
}
|
||
|
||
/* Screenshot Showcase */
|
||
.screenshot-showcase {
|
||
padding: var(--space-2xl) 0;
|
||
background: var(--color-bg-secondary);
|
||
border-top: 1px solid var(--color-border);
|
||
border-bottom: 1px solid var(--color-border);
|
||
}
|
||
|
||
.showcase-header {
|
||
text-align: center;
|
||
margin-bottom: var(--space-xl);
|
||
}
|
||
|
||
.showcase-label {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.875rem;
|
||
color: var(--color-accent);
|
||
letter-spacing: 0.1em;
|
||
margin-bottom: var(--space-sm);
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
.showcase-title {
|
||
font-size: clamp(1.75rem, 4vw, 2.5rem);
|
||
font-weight: 900;
|
||
text-transform: uppercase;
|
||
letter-spacing: -0.02em;
|
||
color: var(--color-text);
|
||
margin-bottom: var(--space-sm);
|
||
}
|
||
|
||
.showcase-subtitle {
|
||
font-size: 1rem;
|
||
color: var(--color-text-secondary);
|
||
line-height: 1.6;
|
||
max-width: 600px;
|
||
margin: 0 auto;
|
||
}
|
||
|
||
.showcase-grid {
|
||
display: flex;
|
||
justify-content: center;
|
||
}
|
||
|
||
.showcase-item {
|
||
width: 100%;
|
||
max-width: 1200px;
|
||
}
|
||
|
||
.showcase-image-wrapper {
|
||
position: relative;
|
||
border-radius: var(--radius-lg);
|
||
overflow: hidden;
|
||
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
|
||
border: 1px solid var(--color-border);
|
||
}
|
||
|
||
.showcase-image {
|
||
display: block;
|
||
width: 100%;
|
||
height: auto;
|
||
max-width: 1400px;
|
||
margin: 0 auto;
|
||
}
|
||
|
||
.showcase-caption {
|
||
padding: var(--space-md) var(--space-lg);
|
||
font-family: var(--font-mono);
|
||
font-size: 0.85rem;
|
||
color: var(--color-text-secondary);
|
||
background: var(--color-bg);
|
||
border-top: 1px solid var(--color-border);
|
||
}
|
||
|
||
@media (max-width: 768px) {
|
||
.screenshot-showcase {
|
||
padding: var(--space-lg) 0;
|
||
}
|
||
|
||
.showcase-title {
|
||
font-size: 1.5rem;
|
||
}
|
||
|
||
.showcase-subtitle {
|
||
font-size: 0.95rem;
|
||
}
|
||
}
|
||
</style>
|