Files
zblade.dev/src/pages/changelog.astro
T

632 lines
18 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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_</span>
</h1>
<p class="hero-description">
Track the evolution of Zaguán Blade. See what's new, what's fixed, and what's coming.
</p>
</div>
</div>
</section>
<!-- v0.1.2 Section -->
<section class="changelog-section">
<div class="container">
<div class="version-card">
<div class="version-header">
<div class="version-info">
<h2 class="version-number">v0.1.2</h2>
<span class="version-date">TBD</span>
</div>
<span class="version-badge badge-development">Development</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>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>
</ul>
</div>
<div class="changes-section">
<h3 class="changes-title">
<span class="changes-icon">🔄</span>
Improvements
</h3>
<ul class="changes-list">
<li><strong>Git performance.</strong> Replaced most external <code>git</code> calls with <code>gix</code> for faster, more efficient Git operations.</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 a bug where the tool call message would pop to the top instead of being in the conversation flow.</li>
<li>Fixed a bug where the <code>project_index.md</code> had incomplete information.</li>
<li>Added a warning if trying to upload an image using GLM models. They do not support images.</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 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-latest">Latest</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>
Improvements
</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 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>
<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;
}
.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);
}
.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 {
background: var(--color-bg);
border: 1px solid var(--color-border);
padding: var(--space-md);
}
.version-latest .changes-section {
background: var(--color-bg-secondary);
}
/* 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.9rem;
font-weight: 700;
text-transform: uppercase;
margin-bottom: var(--space-sm);
color: var(--color-accent);
font-family: var(--font-mono);
letter-spacing: 0.05em;
}
.changes-icon {
font-size: 1rem;
}
.changes-list {
list-style: none;
}
.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);
}
/* 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;
}
}
</style>