<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>HiveTerm Changelog</title>
    <link>https://hiveterm.com/changelog</link>
    <description>Release notes for HiveTerm — the workspace for your agents and dev stack.</description>
    <language>en-US</language>
    <lastBuildDate>Sun, 09 Aug 2026 00:00:00 GMT</lastBuildDate>
    <atom:link href="https://hiveterm.com/changelog.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>v0.39.0 — 2026-08-09</title>
      <link>https://hiveterm.com/changelog#v0-39-0</link>
      <guid isPermaLink="false">hiveterm-v0-39-0</guid>
      <pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Desktop: Routines — put your agents on a schedule.</strong> A new Routines section in the sidebar lets you pick an agent and a project, write the task, and choose when it runs: daily, weekdays, weekly, or every N hours, in your own timezone. HiveTerm runs it for you and keeps the complete result of every run — restart the app and the history is still there.</li><li><strong class="text-hive-text font-semibold">Desktop: every run is a conversation you can continue.</strong> A run opens as a chat: your task on one side, the agent's answer on the other. When the agent ends with a question — "want me to commit this?" — just reply, with file and image attachments if you need them, and it picks up exactly where it left off.</li><li><strong class="text-hive-text font-semibold">Desktop: watch and control runs.</strong> Follow a run live in its own terminal, stop it mid-run, and get a notification when a routine finishes or fails (configurable per routine).</li><li><strong class="text-hive-text font-semibold">Desktop: missed schedules are your call.</strong> If HiveTerm was closed at the scheduled time, each routine chooses its own policy: run as soon as the app opens, or skip to the next slot — skipped slots show up in the history so you always know what happened.</li><li><strong class="text-hive-text font-semibold">Desktop: start from a template.</strong> Morning briefing, issue triage, dependency audit, weekly changelog draft, test health check, and branch cleanup — one click pre-fills a routine you can tweak.</li><li>Routines work with Claude, Codex, Grok, Kimi, OpenCode, and Aider. The Free plan includes 2 routines; Pro is unlimited.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.38.3 — 2026-08-07</title>
      <link>https://hiveterm.com/changelog#v0-38-3</link>
      <guid isPermaLink="false">hiveterm-v0-38-3</guid>
      <pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Desktop: unstable internet no longer signs you out</strong> — on flaky connections (satellite internet like Starlink, mobile hotspots, spotty Wi-Fi), HiveTerm could suddenly show "Access revoked" and demand a fresh sign-in even though your subscription was fine. A brief drop at exactly the wrong moment made the app mistake the outage for a revoked account. It now rides out the drop, keeps your session, and reconnects on its own — the lock screen is reserved for the real thing.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.38.2 — 2026-08-04</title>
      <link>https://hiveterm.com/changelog#v0-38-2</link>
      <guid isPermaLink="false">hiveterm-v0-38-2</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Desktop: Start begins a fresh session again</strong> — on Windows, pressing Start on a stopped agent could pick up the previous conversation instead of starting clean, so there was no way to get a blank slate without Resume doing the same thing. Resume is unchanged and still continues where you left off.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.38.1 — 2026-07-31</title>
      <link>https://hiveterm.com/changelog#v0-38-1</link>
      <guid isPermaLink="false">hiveterm-v0-38-1</guid>
      <pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Desktop: you stay signed in</strong> — HiveTerm could lock you out with "Access revoked" while your subscription was perfectly active, usually just after it reconnected. Two parts of the app renewed your sign-in at the same moment, and each treated the other's success as its own failure. If you hit this, signing in again is safe and nothing was lost.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.38.0 — 2026-07-29</title>
      <link>https://hiveterm.com/changelog#v0-38-0</link>
      <guid isPermaLink="false">hiveterm-v0-38-0</guid>
      <pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Desktop: clone a repository</strong> — "Clone a repository…" now sits next to "Open local folder" in the add-project menu and in the command palette. Paste a URL, pick where it goes, and HiveTerm clones it with live progress and opens it as a project. The folder name is filled in for you, cancelling cleans up after itself, and the folder you cloned into last is remembered for next time.</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Agents start the first time</strong> — an agent could sit on "Starting…" with an empty pane while it was actually running perfectly well behind the scenes, and only clicking Restart brought it into view. Whatever it had already printed is now shown.</li><li><strong class="text-hive-text font-semibold">Editing <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">hive.yml</code> outside the app reloads again</strong> — in the installed app the file was not being watched at all, so changes made in an editor were ignored until relaunch. This only ever worked when running from source.</li><li><strong class="text-hive-text font-semibold">Restarting an agent keeps it an agent</strong> — restarting a Queen-spawned sub-agent quietly turned it into a plain command, losing its instructions and environment along the way.</li><li><strong class="text-hive-text font-semibold">Creating a pull request can't hang forever</strong> — if GitHub asked for credentials that never arrived, the app waited indefinitely. It now gives up like every other network operation.</li><li><strong class="text-hive-text font-semibold">Terminals stop fighting over their own size</strong> — switching tabs while the layout changed could resize a terminal twice in one frame, leaving the pane briefly mismatched.</li><li><strong class="text-hive-text font-semibold">Long sessions stay light</strong> — closing terminals released less memory than they should have.</li><li><strong class="text-hive-text font-semibold">Notifications arrive</strong> — push has been silently dropping notifications; they now reach the phone and open correctly.</li><li><strong class="text-hive-text font-semibold">Fewer permissions requested</strong> — the app no longer declares background capabilities it never used.</li><li><strong class="text-hive-text font-semibold">Purchases on Android</strong> — an inapplicable purchase link no longer appears.</li></ul><h3>Security</h3><ul><li><strong class="text-hive-text font-semibold">Your settings and agent configs are never replaced by defaults</strong> — if HiveTerm could not read a settings or agent-configuration file, it would fall back to defaults and then save those over your real file. It now leaves the file untouched and tells you instead.</li><li><strong class="text-hive-text font-semibold">Discarding a change stays inside the file you picked</strong> — the discard action accepted an empty selection, which resolved to the whole project folder.</li><li><strong class="text-hive-text font-semibold">File actions stay inside the open project</strong> — every command that reads or writes a file now applies the same confinement rule, including for paths reached through a symbolic link.</li><li><strong class="text-hive-text font-semibold">A lapsed subscription ends phone access immediately</strong> — a downgrade left live phone sessions connected until the app happened to refresh, and a subscription cancelled while the desktop was offline was never noticed at all. Voice from the phone is now covered by the same rule.</li><li><strong class="text-hive-text font-semibold">Only your own dev servers are reachable from the phone</strong> — a terminal could add a port to what the phone was allowed to reach; only the commands you defined can.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.37.0 — 2026-07-17</title>
      <link>https://hiveterm.com/changelog#v0-37-0</link>
      <guid isPermaLink="false">hiveterm-v0-37-0</guid>
      <pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Mobile: open login links with one tap</strong> — when an agent prints a link (like Claude's sign-in page), a chip appears over the terminal to open it in an in-app browser or copy it. No more fighting to select a long URL by hand.</li><li><strong class="text-hive-text font-semibold">Mobile: arrow keys</strong> — the key bar now has ↑ and ↓, so Claude's /resume picker, menus, and shell history finally work from the phone.</li><li><strong class="text-hive-text font-semibold">Mobile: terminal loading indicator</strong> — opening a terminal shows a spinner while it connects instead of a black screen.</li><li><strong class="text-hive-text font-semibold">Desktop: agents work better together</strong> — Claude and Codex now receive built-in guidance on how to talk to each other through HiveTerm, so multi-agent discussions start correctly without extra setup.</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Desktop: working offline no longer locks you out</strong> — HiveTerm now tolerates being offline for up to three days before asking you to reconnect. A brief internet hiccup or a service outage never freezes your work mid-task again.</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Desktop: no more "You're offline" after waking your computer</strong> — time asleep was being counted as time offline, so coming back the next day greeted you with a lock screen.</li><li>Desktop: the "Retry connection" button now actually retries immediately instead of appearing to do nothing.</li><li>Desktop: if your session was signed out remotely, the app now says so and offers to sign in again, instead of showing an endless offline screen.</li><li><strong class="text-hive-text font-semibold">Desktop: starting Claude on Windows with the phone connected no longer hangs at "Starting…"</strong> — the phone's terminal was interfering with the agent's startup handshake.</li><li>Desktop: the "Starting…" overlay can no longer get stuck covering a terminal indefinitely.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.36.0 — 2026-07-14</title>
      <link>https://hiveterm.com/changelog#v0-36-0</link>
      <guid isPermaLink="false">hiveterm-v0-36-0</guid>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Longer voice notes</strong> — talk to an agent for up to 3 minutes at a time (up from 1), on both the desktop and the phone.</li><li><strong class="text-hive-text font-semibold">Remove agents from your phone</strong> — delete an agent or command from a project in the mobile app, the same way you can on the desktop.</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">More voice-to-text every day</strong> — the built-in transcription now gives Pro users a full hour a day.</li><li><strong class="text-hive-text font-semibold">A smoother mobile home</strong> — the "My work" summary loads without the screen jumping, projects group into tidy cards you can expand and collapse, and tapping a summary like "Waiting for you" takes you straight to what needs you.</li></ul><h3>Fixed</h3><ul><li>Voice notes that can't be transcribed now explain why in plain language instead of showing a raw error.</li><li>Starting a stopped agent from the phone shows its terminal right away, at the correct width — no need to back out and reopen.</li><li>Swiping a panel closed in the mobile app now works every time.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.35.0 — 2026-07-14</title>
      <link>https://hiveterm.com/changelog#v0-35-0</link>
      <guid isPermaLink="false">hiveterm-v0-35-0</guid>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Preview modern dev stacks on your phone</strong> — apps that load their styles and scripts from a separate dev server (like Laravel with Vite) now display correctly in the mobile preview.</li><li><strong class="text-hive-text font-semibold">Preview Docker Compose apps</strong> — a <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">docker compose up</code> project now gets a preview button on the phone, pointed at the right address.</li><li><strong class="text-hive-text font-semibold">Automatic mobile updates</strong> — the app now updates itself in the background, so improvements reach your phone without waiting on an app-store release.</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Connecting to a desktop is much faster</strong> — usually a couple of seconds instead of up to fifteen.</li><li>Clearer connection status — the app distinguishes connecting for the first time from reconnecting, and explains any failure in plain language.</li></ul><h3>Fixed</h3><ul><li>A phone with an expired session no longer gets stuck retrying; it asks you to scan the pairing code again.</li><li>Fixed a rare case where signing back in could leave the phone's session unusable.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.34.1 — 2026-07-13</title>
      <link>https://hiveterm.com/changelog#v0-34-1</link>
      <guid isPermaLink="false">hiveterm-v0-34-1</guid>
      <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Instant, clear connection errors</strong> — when a desktop can't be reached, the phone tells you why in about a second instead of spinning for half a minute.</li><li><strong class="text-hive-text font-semibold">Unpairing syncs both ways</strong> — removing a phone on the desktop now removes that desktop from the phone right away.</li><li><strong class="text-hive-text font-semibold">Cancel a connection attempt</strong> from the home screen.</li></ul><h3>Fixed</h3><ul><li>Fixed the core problem where a desktop showed the wrong online status after sleep or a network change — the connection recovers on its own within seconds now.</li><li>Returning to the app refreshes the connection immediately, and the pull-to-refresh spinner no longer spins forever.</li><li>Brief network hiccups no longer drop an active session.</li></ul><h3>Security</h3><ul><li>Fixed a sign-in token that could stay valid longer than intended. Tokens were still single-use and tied to your session; the intended time limit is now enforced.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.34.0 — 2026-07-13</title>
      <link>https://hiveterm.com/changelog#v0-34-0</link>
      <guid isPermaLink="false">hiveterm-v0-34-0</guid>
      <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">HiveTerm for iOS and Android</strong> — a full companion app, not a status widget. Home shows your paired desktops, workspaces, and agents; open any bee and you get a real terminal session streamed from your machine.</li><li><strong class="text-hive-text font-semibold">Pair in seconds</strong> — generate a QR on the desktop, scan with the phone, confirm a short code. One scan signs you in and links that phone to this computer. Unpair anytime from either side.</li><li><strong class="text-hive-text font-semibold">Push when an agent needs you</strong> — leave the desk. When an agent finishes, crashes, or asks for input, your phone gets a notification. Contents stay encrypted end-to-end; only your device can read them.</li><li><strong class="text-hive-text font-semibold">Works on cellular, not only home Wi‑Fi</strong> — the link between phone and desktop is built for the real world (cafés, trains, 5G), not just the same network.</li><li><strong class="text-hive-text font-semibold">Talk to agents from your pocket</strong> — type in the terminal, use the key bar, or hold the mic and speak. Voice uses the same Pro transcription path as the desktop.</li><li><strong class="text-hive-text font-semibold">Source Control on the phone</strong> — see what changed, review diffs, commit and push without opening the laptop.</li><li><strong class="text-hive-text font-semibold">Preview your local app</strong> — open the desktop’s running dev servers (the ones HiveTerm already detects) in a browser on the phone, through the same secure link.</li><li><strong class="text-hive-text font-semibold">Send photos and files</strong> into an agent session from the phone camera roll or file picker.</li><li><strong class="text-hive-text font-semibold">Start, stop, and resume agents</strong> from the phone when you’re not at the machine — including a clear overlay when something has stopped.</li><li><strong class="text-hive-text font-semibold">Home built for ops</strong> — pin the bees you care about, jump back into recent work, see sub-agents under their parent, and which OS each desktop is on.</li><li><strong class="text-hive-text font-semibold">Install from the desktop</strong> — Settings → Mobile → iOS or Android shows a QR that opens the install page on your phone (no multi‑hundred‑MB download dumped on your Mac).</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">The phone UI feels like a product, not a prototype</strong> — light and dark themes, language support, proper back gestures, smoother sheets, and a first-run welcome that explains pairing.</li><li><strong class="text-hive-text font-semibold">Cooler and snappier on long sessions</strong> — less battery heat from terminals and background work; connects faster when you’re on the go.</li><li><strong class="text-hive-text font-semibold">Projects stay in sync both ways</strong> — reorder projects on the phone or the desktop and the other side follows.</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Reopening a terminal on the phone after a long agent session no longer shows a screen full of garbage characters.</strong> History is cleaned up so colors and UI codes don’t leak as plain text.</li><li><strong class="text-hive-text font-semibold">The live project list keeps updating</strong> even when agents are streaming heavily.</li><li><strong class="text-hive-text font-semibold">Terminal size follows the phone</strong> while you’re attached — no more fighting the desktop pane for control of rows and columns.</li><li><strong class="text-hive-text font-semibold">Fewer “stuck” states</strong> — Start when an agent is stopped, fewer failed reconnects, previews that survive a desktop restart, and cleaner navigation.</li><li><strong class="text-hive-text font-semibold">Sign-out closes Settings properly</strong>; projects don’t get lost when you delete a workspace you weren’t viewing.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.33.1 — 2026-07-11</title>
      <link>https://hiveterm.com/changelog#v0-33-1</link>
      <guid isPermaLink="false">hiveterm-v0-33-1</guid>
      <pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Stop actually kills the agent and shows Resume again.</strong> After 0.33.0, Stop could paint Stopped with only Start (no Resume) while the process stayed alive: the UI marked stopped optimistically without the session id, and the backend skipped the status emit when the bee was already gone from the map. Stop now awaits <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">kill_bee</code>, returns <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">{ killed, resumeSessionId }</code>, always emits stopped with the session id from hooks/store, and tears down the <strong class="text-hive-text font-semibold">full descendant tree</strong> (not just the shell process group) so Claude/Grok children cannot survive as orphans. Simple agent commands also spawn without a <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">$SHELL -c</code> wrapper on Unix so the managed PID is the real CLI.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.33.0 — 2026-07-11</title>
      <link>https://hiveterm.com/changelog#v0-33-0</link>
      <guid isPermaLink="false">hiveterm-v0-33-0</guid>
      <pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Source Control panel</strong> (VS Code-style, first tab of the right rail): always-visible commit box, per-file staging with Staged / Changes / Merge Conflicts sections, stage-all / unstage-all, and per-file discard. Commit &amp; Push actually pushes now.</li><li><strong class="text-hive-text font-semibold">Pull, Push and Fetch</strong> built in — publishing a new branch sets the upstream automatically, and failures come back as clear messages (authentication needed, merge conflict, diverged branch, network) instead of raw git output. A clickable ↓/↑ sync widget in the header opens the panel.</li><li><strong class="text-hive-text font-semibold">AI refinement for voice transcripts</strong> (Settings → Voice): *Clean* strips filler words and fixes punctuation; *Structured* also reorganizes your ideas into coherent paragraphs and lists. Built into Pro — no API key needed. Formatted transcripts paste into agent inputs as real line structure without auto-submitting.</li><li><strong class="text-hive-text font-semibold">Restore agents on launch</strong> — each agent keeps its own CLI session and resumes that exact conversation when you reopen the app. Supported: Claude, Grok, Codex, Kimi, OpenCode, Antigravity (Settings → Agents; on by default).</li><li><strong class="text-hive-text font-semibold">Reopen on the last active bee</strong> — the app now lands on the bee you were focused on when you quit.</li><li><strong class="text-hive-text font-semibold">Resume for stopped Grok agents</strong> — same overlay button Claude already had.</li><li><strong class="text-hive-text font-semibold">MCP tools <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">request</code> and <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">respond</code></strong> — one-call ask-and-wait for agent-to-agent conversations.</li><li><strong class="text-hive-text font-semibold">Structured agent-messaging logs</strong> for delivery, identity and drop diagnostics.</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Settings opens as a centered modal</strong> (like you'd expect from a desktop app) with a navigation rail — no more full-screen takeover pinned to the tab bar.</li><li><strong class="text-hive-text font-semibold">Voice transcription is much faster</strong>: audio is downsampled and shipped in a single step instead of bouncing through the UI layer, with proper anti-aliasing so accuracy improved too.</li><li><strong class="text-hive-text font-semibold">Quitting no longer asks for confirmation</strong> — running agents are snapshotted for resume and shut down cleanly.</li><li><strong class="text-hive-text font-semibold">Agent-to-agent delivery is at-least-once</strong>: messages are held until they're confirmed on the wire and requeued on any drop, so recipients can no longer miss them. Agents should treat message ids as idempotent.</li><li>Spawning an agent with a task now delivers the task once, on the message bus.</li><li>Source Control rail got a wider default and a sturdier layout at narrow widths.</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Agent-to-agent messages no longer vanish</strong> when a connection drops mid-delivery — the number one cause of "my sub-agent never got the message".</li><li><strong class="text-hive-text font-semibold">Trial expiry is handled properly</strong>: the sidebar badge now says "Trial expired" instead of a broken "0 days left", and the end-of-trial dialog appears at the moment the trial ends — even offline — with the option to upgrade or continue on Free.</li><li><strong class="text-hive-text font-semibold">Voice input is on by default for Pro</strong> — a legacy setting kept it hidden for accounts created on older versions.</li><li><strong class="text-hive-text font-semibold">Markdown files opened from Source Control now show the diff</strong>, not the rendered preview.</li><li>Editing <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">hive.yml</code> no longer silently deselects the bee you're working in.</li><li>Quitting no longer wipes agent-resume state, so agents come back running instead of stopped.</li><li>Voice transcripts can no longer inject control characters into the terminal.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.32.0 — 2026-07-10</title>
      <link>https://hiveterm.com/changelog#v0-32-0</link>
      <guid isPermaLink="false">hiveterm-v0-32-0</guid>
      <pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Workspaces, right in the sidebar.</strong> Your workspaces now live as a list above your projects: one click to switch, drag to reorder, right-click to rename or delete, and a "New workspace…" row with its shortcut. Hover a neighbor row to see the cycle shortcut for it.</li><li><strong class="text-hive-text font-semibold">Move projects between workspaces.</strong> Right-click a project → "Move to workspace". Everything keeps running — the project simply shows up in its new home, ready when you switch there.</li><li><strong class="text-hive-text font-semibold">Switch workspaces from anywhere.</strong> Cycle with ⌘⇧] / ⌘⇧[ (remappable in Settings → Hotkeys), or type a workspace's name in the Command Palette (⌘K) to jump straight to it.</li><li><strong class="text-hive-text font-semibold">Know when an agent needs you in another workspace.</strong> If an agent asks for input, finishes, or crashes in a workspace you're not viewing, HiveTerm notifies you even while the app is focused — the notification names the workspace, and an amber dot marks it in the sidebar until you visit.</li><li><strong class="text-hive-text font-semibold">Split panes across projects.</strong> Working on two projects at once? Drag an agent from any project onto a pane and they share one view. Each pane shows its project's name so you always know which repo an agent is acting on, and the split stays reachable from both projects' sidebars.</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Deleting a workspace no longer strands its projects.</strong> They move to your first remaining workspace — nothing is deleted, and the confirmation says exactly that.</li><li><strong class="text-hive-text font-semibold">A pane lives in one split at a time.</strong> Adding a pane that already belongs to another split now moves it over instead of duplicating it.</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">The offline screen stops ambushing you.</strong> A quick network blip — router reboot, wifi hop, laptop waking from sleep — flashed the full-screen "You're offline" lock instantly. Now it only appears after five continuous minutes offline; short drops show the small reconnecting banner and get out of your way.</li><li><strong class="text-hive-text font-semibold">Notifications from sub-agents reach you on macOS.</strong> An agent calling the <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">notify</code> tool was silently dropped; it now lands like every other notification.</li><li><strong class="text-hive-text font-semibold">Notification texts no longer show a literal "{workspace}" placeholder.</strong></li><li><strong class="text-hive-text font-semibold">Token counters stick to the right agent.</strong> With two or more agents running in the same folder, usage numbers could attach to the wrong one mid-session.</li><li><strong class="text-hive-text font-semibold">Crashed agents restart once, not twice.</strong> Clicking Restart right after a crash could collide with the automatic restart and bounce the agent twice.</li><li><strong class="text-hive-text font-semibold">Fast pane closing no longer leaks.</strong> Closing terminals quickly (or switching projects mid-spawn) left invisible listeners behind, slowly weighing the app down over long sessions.</li><li><strong class="text-hive-text font-semibold">Starting many agents at once is steadier on Windows.</strong> Simultaneous spawns could slip past the pacing that prevents them from tripping over each other's shared files.</li><li><strong class="text-hive-text font-semibold">The app opens even with a malformed Claude settings file.</strong> A hand-edited <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">~/.claude/settings.json</code> with unexpected structure could stop HiveTerm from starting.</li><li><strong class="text-hive-text font-semibold">Voice capture can't freeze the window anymore.</strong> A slow microphone driver used to hang the whole UI while the recording started or stopped.</li><li><strong class="text-hive-text font-semibold">Resized panes keep their proportions.</strong> Adding or closing a pane no longer scrambles the sizes you dragged.</li><li><strong class="text-hive-text font-semibold">Update toast and font picker speak your language.</strong> A few stray English strings now follow the app language (English, Português, Español).</li><li><strong class="text-hive-text font-semibold">No more console flash on Windows</strong> when viewing a file from an older revision.</li><li><strong class="text-hive-text font-semibold">Workspace rows no longer trap a focus ring</strong> after switching by keyboard.</li></ul><h3>Security</h3><ul><li>Temporary files for clipboard images and agent-config writes now use unpredictable names, closing a local file-clobbering vector.</li><li>Secret redaction now also covers error messages from voice transcription providers.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.31.4 — 2026-06-30</title>
      <link>https://hiveterm.com/changelog#v0-31-4</link>
      <guid isPermaLink="false">hiveterm-v0-31-4</guid>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">See what's new before you update.</strong> When a new version is ready, a button appears above "Add project" and a modal shows the release notes with a one-click "Restart &amp; update". The download already happened quietly in the background, so the restart is instant.</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Updates no longer install behind your back.</strong> HiveTerm checks for and downloads updates in the background, then lets you choose when to restart — no more surprise relaunch mid-task. "Check for updates" in Settings opens the same what's-new modal.</li><li><strong class="text-hive-text font-semibold">Quieter when idle.</strong> Token-usage tracking now wakes on agent output instead of waking on a fixed timer, so the app stops keeping your machine busy when you're not running anything.</li><li><strong class="text-hive-text font-semibold">Cursor blinks only where you're typing.</strong> In a split, only the focused terminal pane blinks its cursor.</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Copy an agent's output on Windows.</strong> Ctrl+C now copies what the agent printed even when the terminal holds no live text selection, instead of doing nothing.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.31.3 — 2026-06-29</title>
      <link>https://hiveterm.com/changelog#v0-31-3</link>
      <guid isPermaLink="false">hiveterm-v0-31-3</guid>
      <pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Give a spawned agent its first task up front.</strong> When you spawn an agent over MCP, you can now hand it the task to start on right away — it gets to work the moment it's up, instead of sitting idle at its prompt until something nudges it. Set a persona, hand off a task, or both.</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">First hand-off always lands.</strong> A just-spawned agent now reliably receives and acts on the first message sent to it, even while it's still booting — so MCP orchestrations stop stalling on a reply that never comes.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.31.2 — 2026-06-26</title>
      <link>https://hiveterm.com/changelog#v0-31-2</link>
      <guid isPermaLink="false">hiveterm-v0-31-2</guid>
      <pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Agents with a persona file now start.</strong> An agent that only points at a system-prompt file (with no command of its own) launches the configured agent CLI with that prompt, instead of silently doing nothing.</li><li><strong class="text-hive-text font-semibold">Editing sub-agent instructions no longer breaks the app.</strong> Setting a sub-agent's instructions from Project Settings used to corrupt the project config — sometimes leaving an agent that wouldn't start, or a project that wouldn't open at all. Sub-agent instructions now save to their own store, and a single malformed entry can no longer take the whole project offline.</li><li><strong class="text-hive-text font-semibold">Sub-agents stay under their orchestrator.</strong> After a restart, MCP-spawned sub-agents keep their place nested beneath the orchestrator that launched them instead of scattering into a separate list.</li><li><strong class="text-hive-text font-semibold">Renames stick.</strong> Renaming an agent now survives a restart, and turns off auto-rename so the terminal title can't overwrite your chosen name.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.31.1 — 2026-06-26</title>
      <link>https://hiveterm.com/changelog#v0-31-1</link>
      <guid isPermaLink="false">hiveterm-v0-31-1</guid>
      <pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Your voice, alive.</strong> Hold the mic and a swarm of light blooms across the screen, breathing with your voice as you speak — a big timer front and center, and Esc or your hotkey to stop without reaching for the mouse (Pro).</li><li><strong class="text-hive-text font-semibold">Markdown, your way.</strong> Markdown files open in the editor for quick edits, with a one-click toggle to a rendered preview that reflects what you're typing.</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Files open in an editor, not a viewer.</strong> Opening a file now drops you straight into an editable CodeMirror editor — read by simply not typing, and edit and save (⌘S) the moment you want to. In-file search, go-to-line and smooth navigation of huge files all carry over.</li><li><strong class="text-hive-text font-semibold">Antigravity and Kimi join Discussions.</strong> Both can now be picked as discussion participants and orchestrators, right alongside Claude and Codex.</li></ul><h3>Removed</h3><ul><li><strong class="text-hive-text font-semibold">Open-in-external-editor.</strong> The built-in editor replaces it — files open directly in HiveTerm, no round-trip to another app.</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Agents wake each other up.</strong> A freshly spawned Claude agent now reliably receives and acts on a message sent right after it boots, so MCP orchestration stops stalling on the first hand-off.</li><li><strong class="text-hive-text font-semibold">Kimi spawns and runs.</strong> Launching Kimi with a task no longer crashes, and turning on skip-permissions now applies its <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">--yolo</code> flag so it doesn't wait on approvals.</li><li><strong class="text-hive-text font-semibold">Copy on Windows.</strong> Selecting text in the terminal and copying it works again on Windows.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.31.0 — 2026-06-25</title>
      <link>https://hiveterm.com/changelog#v0-31-0</link>
      <guid isPermaLink="false">hiveterm-v0-31-0</guid>
      <pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Talk to your agents.</strong> Hold the mic, say your prompt, and it lands in the terminal as text — no typing, no API key to wire up. Transcription runs on HiveTerm's own service, ready the moment you are (Pro).</li><li><strong class="text-hive-text font-semibold">Kimi joins the swarm.</strong> Kimi Code (Moonshot's K2) is now a first-class agent — spawn it, drop it into a discussion, and let it drive HiveTerm's MCP tools right alongside Claude, Codex and Antigravity. Token usage is tracked and the MCP server connects with a single toggle.</li><li><strong class="text-hive-text font-semibold">Meet Antigravity.</strong> Google retired the Gemini CLI for individual plans, so HiveTerm now ships its successor — Google's Antigravity CLI (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">agy</code>) — as a first-class agent. Spawn it, orchestrate it, and it drives the Queen's MCP tools like the rest, pre-set to skip approval prompts so it just runs.</li><li><strong class="text-hive-text font-semibold">Make every shortcut yours.</strong> Remap, disable or reset any keyboard shortcut in Settings → Hotkeys. Conflicts are flagged as you bind, and the essentials — tab switching, copy and paste — stay protected.</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Meetings are now Discussions.</strong> A clearer name and a redesigned panel: cleaner thread cards and a one-click expand to read any exchange full-screen, with long participant lists and end-of-thread summaries that read at a glance.</li><li><strong class="text-hive-text font-semibold">A calmer launch.</strong> HiveTerm now opens with nothing selected — a clean slate, so you choose where to start instead of landing mid-project.</li></ul><h3>Removed</h3><ul><li><strong class="text-hive-text font-semibold">Gemini CLI.</strong> Google shut it down for the free, Pro and Ultra plans — HiveTerm replaces it with the Antigravity CLI (above), which runs the same Gemini models.</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Free plan: your agent always starts.</strong> Relaunching your own agent no longer trips the agent limit — what counts is how many agents you're running, not how many times you've restarted one.</li><li><strong class="text-hive-text font-semibold">Plan usage tells the truth.</strong> The plan panel now shows the real Free limits: 1 project and 2 agents.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.30.0 — 2026-06-24</title>
      <link>https://hiveterm.com/changelog#v0-30-0</link>
      <guid isPermaLink="false">hiveterm-v0-30-0</guid>
      <pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Sub-agents that survive a restart.</strong> The agents your orchestrators spawn no longer vanish when you quit. They come back in the sidebar, stopped, and one click resumes the exact conversation where it left off — same session, same context (Claude and Codex; Gemini re-runs the task fresh).</li><li><strong class="text-hive-text font-semibold">Prompt files.</strong> Point an agent at a Markdown file as its system prompt and HiveTerm re-reads it on every launch — edit the file, restart the agent, done. Pick one from the Add-agent dialog or Project Settings, and the agent even names itself after the file.</li><li><strong class="text-hive-text font-semibold">Edit instructions anywhere.</strong> Right-click any agent to open its system prompt in a focused editor you can pop out full-screen whenever the box feels cramped.</li><li><strong class="text-hive-text font-semibold">Personas for spawned agents.</strong> Orchestrators can now hand a fresh sub-agent its role at spawn time — loaded as a real system prompt that survives context compaction, instead of being typed into the chat.</li><li><strong class="text-hive-text font-semibold">One-call agent round-trips.</strong> A message can now wait for the reply and return it in the same step, so an orchestrator gets its answer without a separate poll.</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Agents and Commands, separated.</strong> Project Settings now keeps your agents and your commands in their own sections — an agent was never really a "command."</li><li>The names you (or an orchestrator) give your agents now stick, instead of drifting to the CLI's auto-generated session title.</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Windows: prompts and paths reach the agent intact.</strong> When one agent launches another, the command, the initial prompt and project paths with spaces or special characters are now passed through to the agent intact, instead of getting mangled by the shell.</li><li><strong class="text-hive-text font-semibold">No more corrupted config.</strong> hive.yml is written with a proper YAML serializer, so Windows paths and richer per-agent settings round-trip cleanly.</li><li>The sidebar's command-row hover no longer bleeds past the card's rounded corners.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.29.0 — 2026-06-10</title>
      <link>https://hiveterm.com/changelog#v0-29-0</link>
      <guid isPermaLink="false">hiveterm-v0-29-0</guid>
      <pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Meetings.</strong> A new panel (⌘J) shows your agents talking to each other as clean chat threads — each message with the agent's avatar, replies linked to what they answer, and the final outcome highlighted as a summary card. No more reading raw terminal scrollback to follow a multi-agent exchange.</li><li><strong class="text-hive-text font-semibold">One-click orchestration.</strong> Hit ⌘⇧J (or the + button), pick a template, write the topic, choose the participants. An orchestrator agent spawns the team, runs the conversation and delivers the wrap-up. Six templates: <strong class="text-hive-text font-semibold">Decision</strong> (two agents argue opposing sides), <strong class="text-hive-text font-semibold">Brainstorm</strong> (different perspectives, one synthesis), <strong class="text-hive-text font-semibold">Review</strong> (a defender vs. attackers over your code), <strong class="text-hive-text font-semibold">Plan</strong> (product and engineering lenses merge a plan), <strong class="text-hive-text font-semibold">Dev squad</strong> (splits a feature between agents that build it in parallel in your repo, with exclusive file ownership and a final delivery report), and <strong class="text-hive-text font-semibold">Custom</strong> (write your own brief — roles, rounds and flow are up to you).</li><li><strong class="text-hive-text font-semibold">Cross-vendor teams.</strong> Any of Claude, Codex or Gemini can orchestrate or participate — OpenAI moderating Anthropic vs. Google is now a thing you can do before breakfast.</li><li><strong class="text-hive-text font-semibold">A real message bus for agents.</strong> Under the hood, agents communicate through structured MCP tools (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">send_message</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">read_inbox</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">reply</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">await_reply</code>) instead of typing into each other's terminals — no noise, no scraping, no lost messages. Replies are correlated, conversations are threaded, and everything works with agents that can't be poked mid-run.</li><li><strong class="text-hive-text font-semibold">Meeting history that survives.</strong> Conversations persist across restarts, load collapsed so you pick what to read, follow new meetings live with auto-scroll, and can be deleted per meeting or cleared entirely.</li><li><strong class="text-hive-text font-semibold">Agent spawn controls.</strong> Agents spawned via MCP can now request a specific model and run with permissions bypassed — so orchestrated teams never stall waiting for an approval click.</li><li><strong class="text-hive-text font-semibold">Large-file viewer.</strong> Huge files open in a virtualized code view with text search, instead of grinding the editor to a halt.</li></ul><h3>Changed</h3><ul><li>Splits are now agent-first: the new-split button pairs your agents, and panes can be dragged to reposition or swap directly in the layout.</li><li>Empty sidebar sections show inline shortcuts to add an agent, terminal or command right where you'd expect them.</li><li>Faster everywhere: meeting messages deliver incrementally instead of reloading the whole history, the file-change watcher on macOS uses a single recursive watch, and several hot paths in the sidebar, palette and git integration were tightened up.</li></ul><h3>Fixed</h3><ul><li>Switching workspaces now fully resets the main view — no more seeing the previous workspace's tabs or files.</li><li>Agent logos are detected from the actual binary, so an orchestrator that mentions other agents in its prompt no longer wears the wrong badge.</li><li>Rearranging split panes no longer garbles the terminal repaint.</li><li>Assorted polish: context-menu hover radius, find-in-files input, header button alignment, active-tab border rendering.</li></ul><h3>Security</h3><ul><li>The local MCP control plane now authenticates its callers, and account and licensing checks were hardened across the board.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.28.1 — 2026-06-08</title>
      <link>https://hiveterm.com/changelog#v0-28-1</link>
      <guid isPermaLink="false">hiveterm-v0-28-1</guid>
      <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Windows/Linux: window controls are back.</strong> The macOS-only translucent chrome no longer applies to other platforms, restoring the native minimize/maximize/close buttons that 0.28.0 removed.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.28.0 — 2026-06-08</title>
      <link>https://hiveterm.com/changelog#v0-28-0</link>
      <guid isPermaLink="false">hiveterm-v0-28-0</guid>
      <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Edit files without leaving the terminal.</strong> Open a file from the diff or explorer panel and change it right there — a full editor (CodeMirror 6) with syntax highlighting, find, and go-to-line. Save with ⌘S. If the file changed on disk while you were in it, Hive catches the conflict and lets you reload or keep your copy. Saves are atomic and keep your original line endings and BOM, so writing a file never quietly mangles it.</li><li><strong class="text-hive-text font-semibold">A glass redesign on macOS.</strong> Rounder window corners, and a sidebar, diff panel, and status bar that go translucent and pick up the desktop behind them. New in Appearance: a spacious/compact density toggle for how tight you want the rows, plus glass set to on, off, or auto.</li><li><strong class="text-hive-text font-semibold">Custom window controls (macOS).</strong> Hive draws its own close, minimize, and zoom buttons, sitting cleanly under the rounded window instead of jammed into the corner.</li><li><strong class="text-hive-text font-semibold">A welcome screen when nothing's open.</strong> No project loaded? You get a real starting point — open a project, jump to the command palette, or settings — and a list of your recently-opened projects, one click to reopen. Projects that have since moved or been deleted drop off on their own.</li><li><strong class="text-hive-text font-semibold">Copy a whole file in one click</strong>, straight from the viewer toolbar. And ⌘A inside a file now selects the file's text, not the entire window.</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Start a command without it stealing your screen.</strong> Hit ▶ on a command or agent in the sidebar and it spins up in the background — your current view stays put. Click the row or tab when you actually want to look at it.</li><li>The file viewer handles large files faster, and in-file search feels smoother.</li></ul><h3>Fixed</h3><ul><li>Removing your last project now drops you on the welcome screen instead of a blank pane.</li><li>Switching a file between viewing and editing no longer shifts the code sideways — the two views line up to the pixel.</li></ul><h3>Security</h3><ul><li>File reads over the IPC bridge are confined to the open project's folder and capped in size, so the app can't be steered into reading arbitrary paths off your disk.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.27.0 — 2026-06-01</title>
      <link>https://hiveterm.com/changelog#v0-27-0</link>
      <guid isPermaLink="false">hiveterm-v0-27-0</guid>
      <pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Pins &amp; Notes.</strong> Pin any terminal output to a per-project rail and work it as a checklist — for the "found this, not ready to fix it yet" pile. Each pin has an editable title + body, drag to reorder, and done items collapse into their own group. Capture a selection with ⌘⇧P, right-click → Pin selection, or the pill over a selection — and it works inside full-screen TUIs like Claude Code (via OSC 52), not just plain shells. Below the pins, a notes scratchpad autosaves per project. Toggle the panel with ⌘P; expand it to fill the window.</li><li><strong class="text-hive-text font-semibold">Your agents manage pins &amp; notes over MCP.</strong> Eight Hive MCP tools let a running agent list, create, update and check off pins, and read or write notes — scoped to its own project. The agent can pin its plan and tick items off as it finishes them.</li><li><strong class="text-hive-text font-semibold">Commands in split panes.</strong> Command bees are now draggable into the split grid alongside agents and terminals.</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Keyboard shortcuts:</strong> the sidebar toggle is now ⌘B (was ⇧⌘B), the branch switcher is ⇧⌘B (was ⌘B), and the diff panel is ⌘Y (was ⇧⌘Y).</li><li>New pins land at the top of the list (newest first); drag to reorder.</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">The window opens inside your screen.</strong> On small or scaled displays — common on Windows, like 1366×768 or 1080p at 150% — the window no longer opens larger than the screen with its edges cut off. It fits to the screen and centers on first launch, and remembers your size and position between launches.</li></ul><h3>Performance</h3><ul><li>Editing or capturing a pin no longer re-renders the pins panels of unrelated projects, and an agent's pin edit updates only the project it touched. Also trimmed wasted work in the terminal selection tracker and stopped an internal copy cache from growing unbounded.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.26.0 — 2026-05-30</title>
      <link>https://hiveterm.com/changelog#v0-26-0</link>
      <guid isPermaLink="false">hiveterm-v0-26-0</guid>
      <pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Split Panes — your agents, side by side.</strong> Split the workspace into a grid and run up to four agents or terminals at once, each live in its own pane. No more alt-tabbing between sessions to find out who's stuck: watch Claude Code plan while Codex implements and your dev server prints logs, all in one window. Drag a bee into a pane to add it, drag the dividers to resize, and split right (⌘D) or down (⇧⌘D) straight from the keyboard.</li><li><strong class="text-hive-text font-semibold">Named split groups.</strong> Save different layouts as named groups — "Frontend", "Review", "Debug" — and switch between them from the sidebar. Fill a split to capacity and the next agent spills into a fresh group automatically, so a click never dead-ends.</li><li><strong class="text-hive-text font-semibold">Split from anywhere.</strong> Right-click any agent to open it beside or below the one you're viewing, or hit "+" on a split to spin up a brand-new agent directly into the grid — in the direction you asked for.</li></ul><h3>Performance</h3><ul><li><strong class="text-hive-text font-semibold">Typing stays instant, even on a huge paste.</strong> Your keystrokes and pastes now travel to the agent over a direct binary channel instead of being re-encoded as text along the way. The input lag — and the occasional "Not Responding" freeze on Windows when pasting a large block — are gone.</li><li><strong class="text-hive-text font-semibold">Lighter and faster everywhere, with the biggest wins on Windows and Linux.</strong> Less memory per running agent, quicker sub-agent spawns, a snappier shutdown, and file-watching that no longer trips Linux's watch limits on large monorepos (with a clear heads-up in the diff panel on the rare occasion your system limit is hit). The terminal now adapts its renderer to your hardware, so machines without GPU acceleration — common on Linux — stay smooth instead of stuttering.</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Sub-agents reliably find their parent.</strong> Spawning an agent from another agent over MCP could, after a long session with many connections, fail to recognize which agent requested it. Connections are now released the instant they close, so agent-spawns-agent stays dependable no matter how long you've been working.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.25.5 — 2026-05-21</title>
      <link>https://hiveterm.com/changelog#v0-25-5</link>
      <guid isPermaLink="false">hiveterm-v0-25-5</guid>
      <pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Your prompt goes to the agent you actually clicked.</strong> Clicking an agent in a project that wasn't focused yet could silently hand your next keystrokes to a different agent — the one the app auto-selected a beat later — so a prompt you meant for "Claude" ended up running in a template generator you never started. Your selection now wins.</li><li><strong class="text-hive-text font-semibold">Ctrl+A / Ctrl+E / Ctrl+K work in agent prompts on macOS again.</strong> The app treated Command and Control as the same key, so the standard readline/Emacs bindings macOS users rely on for cursor movement were being swallowed as app shortcuts (Ctrl+E was opening "Add Agent" instead of jumping to end of line). Command and Control are now distinct everywhere — Control-based editing reaches the agent, Command still drives the app.</li><li><strong class="text-hive-text font-semibold">Your theme and language really stick now.</strong> The 0.25.4 fix flushed preferences on close, but they could still be wiped at the next launch — and on Windows especially — because the saved theme and locale were dropped from the file whenever any other setting was written. Both are now kept in sync on every save, so changing dark mode or your language survives restarts and unrelated setting changes alike.</li></ul><h3>Performance</h3><ul><li><strong class="text-hive-text font-semibold">Large files open without the wait.</strong> The file viewer now renders only the lines on screen (the rest stay in the document but skip layout and paint), loads each language's syntax grammar on demand instead of all 37 up front, and runs syntax highlighting off the main thread. Opening a multi-thousand-line file no longer hitches the window, and the very first file you open in a session lands faster.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.25.4 — 2026-05-18</title>
      <link>https://hiveterm.com/changelog#v0-25-4</link>
      <guid isPermaLink="false">hiveterm-v0-25-4</guid>
      <pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Your theme and language stay where you put them.</strong> Changing dark mode or switching to Portuguese / Spanish and closing the app quickly no longer resets to defaults on the next launch. Every preference is now flushed to disk before the window closes, and the underlying file is written atomically so a crash or sudden quit can never corrupt it.</li><li><strong class="text-hive-text font-semibold">"This project is already in the workspace" — when it clearly isn't.</strong> Adding a project you'd previously removed used to fail with this warning even though the sidebar showed nothing. The leftover workspace entry now gets cleaned up the moment you remove a project, and any stragglers are scrubbed automatically the next time you open the app.</li><li><strong class="text-hive-text font-semibold">Projects on OneDrive and slow network drives stop disappearing.</strong> A project whose <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">hive.yml</code> was a OneDrive placeholder (or sat on a drive that hadn't finished mounting yet) could be silently removed from your workspace on launch. HiveTerm now confirms a path is genuinely gone before scrubbing it, with a tight 200ms cap so a sluggish network can't slow your boot down.</li><li><strong class="text-hive-text font-semibold">The file viewer no longer "jumps projects" when you close a tab.</strong> Closing the last open file in your active project used to surface a file from a different project that happened to be open in the tab strip behind the scenes — the tab bar showed nothing related, and the central view rendered code from a project you weren't in. Closing a file now stays inside the project you're working in, or hands focus back to your last agent when no other files are open.</li><li><strong class="text-hive-text font-semibold">The Ngrok command stops wearing Grok's avatar.</strong> A name-detection rule was matching <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">grok</code> as a substring of <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">ngrok</code>, so xAI's branded icon would appear on the tunnelling CLI in the sidebar. Same fix covers a few other lookalikes (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">decline</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">sampler</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">spider</code>, etc.).</li><li><strong class="text-hive-text font-semibold">Cleaner agent header.</strong> Removed a stray separator dot that lingered next to the token counter after the CPU / memory readouts were retired in 0.25.0.</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">The sidebar stops folding away when you stop an agent.</strong> Pausing a Claude or Codex session no longer collapses the project section under it — the panel you were actively working in stays put. Auto-behaviour is additive only: starting a bee can still expand a project from elsewhere, but stopping one never hides what you're looking at.</li><li><strong class="text-hive-text font-semibold">Empty sections start collapsed (but not on a brand-new project).</strong> Terminals and Commands sections fold themselves by default when they're empty AND the project already has at least one bee somewhere, so an idle sidebar reads cleaner. Brand-new projects keep every section expanded so the "+ Add" buttons stay visible while you're setting things up. The Agents section is always open — it's the primary thing you'll add first.</li></ul><h3>Performance</h3><ul><li><strong class="text-hive-text font-semibold">Git status and project file listings cache aggressively.</strong> A burst of "git changed" events (running <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">git commit</code>, switching branches, a dev server touching a log file) used to fire the same <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">git branch</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">git status</code>, and full-project file walk over and over within the same second. Each call now checks four <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.git/</code> mtimes and reuses the previous result whenever nothing actually advanced — backend wall time on big projects drops by roughly 40%, and the "Not Responding" freezes some Windows users were still seeing on multi-project workspaces are gone.</li><li><strong class="text-hive-text font-semibold">Cold idle is quieter.</strong> Even when no real change has landed, the previous code was paying the full cost of <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">git branch -vv</code> (300-600ms on Windows NTFS) on every watcher tick. The new fingerprint cache turns that into a 1ms cache hit, so a laptop with HiveTerm open in the background stops periodically waking a CPU core for nothing.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.25.3 — 2026-05-17</title>
      <link>https://hiveterm.com/changelog#v0-25-3</link>
      <guid isPermaLink="false">hiveterm-v0-25-3</guid>
      <pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">No more "Not Responding" on Windows.</strong> The freezes users hit when opening multiple projects, switching branches, committing, or pasting large prompts are resolved. Every backend command that used to block the window now runs in the background.</li><li><strong class="text-hive-text font-semibold">Paste, drop, and voice input stay smooth.</strong> Multi-character pastes, dragging files into a terminal, and voice transcriptions no longer pile up dozens of tiny round-trips to the backend — they land in a single batch, which keeps typing responsive even while an agent is streaming output.</li></ul><h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Debug logging toggle.</strong> Settings → Integrations has a new "Enable debug logging" switch. Off by default. When on, HiveTerm records the timing of every backend operation into a rotating log file under <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">~/.hiveterm/logs/</code>. Lets you attach a precise timeline to a bug report so we can pinpoint freezes without guessing. No personal data, no terminal output.</li></ul><h3>Performance</h3><ul><li><strong class="text-hive-text font-semibold">Boot, git refresh, file picker, and search run off the UI thread.</strong> Twenty-six backend commands moved from synchronous to async dispatch. Visible on Windows as a flat UI even with three agents running and a slow <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">git status</code> in flight; visible on macOS as faster boot when many projects auto-open.</li><li><strong class="text-hive-text font-semibold">Reduced IPC pressure for high-frequency input.</strong> Keystrokes, paste payloads, agent prompt injections, and image drops coalesce into a single backend call whenever they arrive in the same frame.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.25.2 — 2026-05-16</title>
      <link>https://hiveterm.com/changelog#v0-25-2</link>
      <guid isPermaLink="false">hiveterm-v0-25-2</guid>
      <pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">You stay signed in across app restarts.</strong> Close HiveTerm, open it tomorrow morning, and you're already in your workspace — no fresh sign-in, no re-paired devices. Sessions persist for 30 days on every platform.</li><li><strong class="text-hive-text font-semibold">Account page shows your real email.</strong> After a cold launch the "Signed in as" line now reflects the account you authenticated with, not a placeholder.</li><li><strong class="text-hive-text font-semibold">Sessions survive flaky networks.</strong> A brief connectivity hiccup on launch (corporate VPN coming up, hotel wifi blip, slow DNS) no longer logs you out. HiveTerm now tells the difference between a transient network error and a real revoke; only the second one ends your session.</li><li><strong class="text-hive-text font-semibold">Paste images straight into Codex and Gemini.</strong> Cmd+V (or Ctrl+V) of a screenshot or clipboard image now works for every agent — Claude Code, Codex, and Gemini all see <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">[Image]</code> in the prompt instead of the literal file path. Drag-and-drop continues to work as before.</li><li><strong class="text-hive-text font-semibold">Codex and Gemini reliably connect to the Queen MCP on cold boot.</strong> Auto-start agents no longer race the MCP server and fail with "MCP startup failed: handshaking with MCP server failed" — they wait for the server to be ready before starting.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.25.1 — 2026-05-16</title>
      <link>https://hiveterm.com/changelog#v0-25-1</link>
      <guid isPermaLink="false">hiveterm-v0-25-1</guid>
      <pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Sign in with Google / GitHub on Windows and Linux</strong> — completing OAuth in the browser was opening a brand-new (signed-out) HiveTerm window instead of completing the sign-in in the running instance. The deep-link callback now correctly forwards to the running app so the OAuth flow completes in place.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.25.0 — 2026-05-16</title>
      <link>https://hiveterm.com/changelog#v0-25-0</link>
      <guid isPermaLink="false">hiveterm-v0-25-0</guid>
      <pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Sub-agent tree view</strong> — when an agent uses MCP to spawn helpers, those helpers now nest under it with proper tree connectors in the sidebar. Multi-agent orchestrations are finally legible at a glance: each orchestrator shows its own children, and a fallback "Sub-agents" section still catches anything spawned from outside the bee hierarchy.</li><li><strong class="text-hive-text font-semibold">Sign in with Google or GitHub</strong> — magic links still work, and you can now sign in with your Google or GitHub account from the same screen.</li><li><strong class="text-hive-text font-semibold">Silent auto-update on restart</strong> — no more "Update available" modal. HiveTerm downloads the new version in the background and applies it the next time you restart the app. A small toast confirms the new version with a link to the changelog.</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Windows performance overhaul</strong> — the biggest set of Windows-specific perf fixes since v0.8. MCP tool calls, terminal spawning, tab switching, git diff refreshes and project boot are all noticeably snappier. Heavy orchestrator workflows (Codex/Gemini firing many tool calls per second) feel like macOS for the first time.</li><li><strong class="text-hive-text font-semibold">Cleaner sidebar</strong> — removed the CPU and memory readouts. Activity Monitor / Task Manager already do this better, and dropping the polling means less battery drain on laptops.</li><li><strong class="text-hive-text font-semibold">Cleaner Settings</strong> — removed the Privacy tab. Telemetry is anonymous custom events only (no terminal output, no project paths, no personal data), so the toggle wasn't load-bearing.</li><li><strong class="text-hive-text font-semibold">Account tab shows only desktop seats</strong> — admin browser sessions no longer count against your 2-device limit and don't appear in the Active Machines list.</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">No more "License error: not authenticated" on cold boot</strong> — agents set to auto-start would race the session restore on app launch; they now wait until the session is ready before spawning.</li><li><strong class="text-hive-text font-semibold">Tier changes (Pro → Free or Free → Pro) reflect in the app within 10 seconds</strong> — the WebSocket connection is more resilient and properly reconnects after token rotation, so admin-side changes propagate live without restarting the app.</li><li><strong class="text-hive-text font-semibold">Tab switches are faster</strong> — removed a redundant render pass on the terminal canvas. Visible on Windows laptops with shared GPUs (200-400ms hitch gone) and marginally smoother on Mac too.</li><li><strong class="text-hive-text font-semibold">Sign-in dev panel stays open</strong> — pasting an OAuth callback URL no longer collapses the accordion on every keystroke.</li><li><strong class="text-hive-text font-semibold">Sub-agents spawned by sub-agents now nest correctly</strong> — fixed an MCP edge case where literal <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">$HIVETERM_BEE_ID</code> shell templates were treated as a parent ID.</li><li><strong class="text-hive-text font-semibold">Codex agent has a Yolo flag suggestion</strong> — <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">--dangerously-bypass-approvals-and-sandbox</code> is now a one-click chip in the Add Agent and Edit Agent modals.</li></ul><h3>Removed</h3><ul><li>Update modal and "update available" sidebar pill — superseded by silent auto-update + post-restart toast.</li><li>CPU/memory monitoring (resource_monitor and the related sidebar badges).</li><li>Privacy tab and the telemetry opt-out toggle.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.24.1 — 2026-05-15</title>
      <link>https://hiveterm.com/changelog#v0-24-1</link>
      <guid isPermaLink="false">hiveterm-v0-24-1</guid>
      <pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Grok CLI is a first-class agent</strong> — xAI's new coding CLI is preconfigured in Settings → Agents, in the Add agent modal, and in the sidebar's right-click → Add agent menu, complete with its <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">--always-approve</code> yolo flag and a proper avatar.</li><li><strong class="text-hive-text font-semibold">Keyboard hints in the sidebar</strong> — the "Add agent", "Add terminal" and "Add command" buttons now display their shortcuts (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">⌘E</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">⌘T</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">⌘D</code>) right beside the label, so the muscle memory is one glance away.</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Commit and Commit &amp; Push hand work to your agent</strong> — clicking either button while an agent is running in the project now submits the request straight to the agent (no more text sitting unsent in the prompt). The agent picks the conventional commit message and pushes when asked; if no agent is running, the manual commit form still opens as before.</li><li><strong class="text-hive-text font-semibold">Pro Trial reads as unlimited</strong> — the Account tab no longer shows free-tier usage bars during your trial. Backend already grants Pro-equivalent limits while trialling; the UI now matches reality.</li><li><strong class="text-hive-text font-semibold">Sidebar stays quiet under normal load</strong> — CPU and memory readouts on projects and processes only appear when usage actually matters (project: 25% CPU / 1 GB, process: 30% CPU / 500 MB). Flip back to "Always" in Settings → Sidebar if you prefer the live numbers.</li><li><strong class="text-hive-text font-semibold">Auto-start defaults to off</strong> — adding a new agent or command no longer pre-checks "Auto-start when project starts". One less surprise next time you open the project.</li><li><strong class="text-hive-text font-semibold">Roomier Add agent modal</strong> — the agent quick-pick row fits all seven presets cleanly on a single line instead of wrapping or scrolling sideways.</li></ul><h3>Performance</h3><ul><li><strong class="text-hive-text font-semibold">Instant startup on any network</strong> — opening six projects at once no longer freezes the app when GitHub is slow or unreachable. The diff panel boots without waiting on remote services, so the UI stays responsive even offline.</li><li><strong class="text-hive-text font-semibold">No more "Not Responding" with multiple projects</strong> — the worst-case startup time dropped from minutes to milliseconds for users on restrictive networks (corporate proxies, VPNs, regional GitHub routing issues).</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Diff panel focuses on local changes</strong> — the panel now shows your working-tree changes, branch status, commits ahead/behind, and file tree without depending on any external service. Commit, Push and Create PR buttons keep working exactly as before.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.23.0 — 2026-05-14</title>
      <link>https://hiveterm.com/changelog#v0-23-0</link>
      <guid isPermaLink="false">hiveterm-v0-23-0</guid>
      <pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Resume any Claude session in one click</strong> — when a Claude bee stops, the new Resume button next to Start respawns it with <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">claude --resume &lt;id&gt;</code>, so the agent picks up exactly where it left off. No copy-paste, no command memorisation.</li><li><strong class="text-hive-text font-semibold">Five premium monospace fonts, bundled</strong> — Iosevka (default), JetBrains Mono, Fira Code, Geist Mono, and the existing system stack ship with the app. Pick your favourite in Settings → Terminal; nothing to install, ligatures included where the typeface supports them, fully offline.</li><li><strong class="text-hive-text font-semibold">Monospace-only font picker</strong> — when you bring your own font, the picker now hides proportional faces by default so you can't accidentally turn the terminal into Times New Roman.</li><li><strong class="text-hive-text font-semibold">Ghostty-grade terminal capabilities</strong> — opt into bundled <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">xterm-ghostty</code> terminfo (Settings → Terminal) to unlock richer colour and graphics support in modern TUIs.</li><li><strong class="text-hive-text font-semibold">Adjustable letter spacing</strong> — fine-tune terminal density from Settings → Terminal; the new default of 1px gives JetBrains Mono and Iosevka the breathing room they were designed for.</li></ul><h3>Performance</h3><ul><li><strong class="text-hive-text font-semibold">30× faster bee spawn on macOS</strong> — the PTY pipe now bypasses Tauri's IPC channel through a loopback WebSocket, eliminating the ~23 second head-of-line stall that piled up when more than one bee mounted at once. Spawning ten Claude bees in parallel is now near-instant.</li><li><strong class="text-hive-text font-semibold">WebGL terminal renderer, smartly</strong> — the GPU-accelerated renderer is attached only to the visible pane, so opening multiple projects with several agents each never trips Chrome's WebGL context cap and never repaints garbage glyphs after a tab switch.</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Token counts pinned to the right Claude bee</strong> — running two or three Claude bees in the same project no longer mixes up their token counters. Pairing is now deterministic via Claude's SessionStart hook (zero timestamp guessing), with an <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">mtime</code> fallback for any bee whose hook hasn't fired yet.</li><li><strong class="text-hive-text font-semibold">"Open Changes panel by default" setting is honoured everywhere</strong> — every reader of the per-project diff state now respects your global preference, so toggling it off finally keeps the panel closed.</li><li><strong class="text-hive-text font-semibold">Settings tab stays pinned</strong> — clicking a bee or command while Settings is open now just hides the panel; the tab stays in the tab bar so one click brings you back. Only the X (or Esc) tears the tab down.</li><li><strong class="text-hive-text font-semibold">Auto-rename choice persists across restarts</strong> — the Add Agent modal now writes <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">auto_rename</code> into <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">hive.yml</code>, so an agent you opted in to keeps renaming itself on the next app boot.</li><li><strong class="text-hive-text font-semibold">Stopped agents always show a clickable Start button</strong> — the stopped overlay now sits above the diff/changes layer, fixing the case where the button rendered behind another panel and ignored clicks.</li><li><strong class="text-hive-text font-semibold">Mascot no longer floats mid-pane after Vite HMR or restart</strong> — fonts are loaded before xterm measures the cell, the WebGL atlas is flushed when a pane becomes visible, and restarts mirror the manual Stop → Start sequence so the mascot lands where it should.</li><li><strong class="text-hive-text font-semibold">No more stray WebSocket connection errors in the console</strong> — silenced the cosmetic warning that fired every time a bee restarted or a hidden pane attached.</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Default terminal font is Iosevka</strong> — narrow, distinctive, designed for code. Pick another in Settings → Terminal at any time; your system fonts are still available.</li><li><strong class="text-hive-text font-semibold">Diff panel is closed by default for new projects</strong> — the global toggle in Settings → Sidebar lets you flip the default; per-project overrides still win.</li><li><strong class="text-hive-text font-semibold"><code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Stop</code> Claude hook ships out of the box</strong> — installed silently on first boot; powers both the Resume button and the per-bee token counter without needing a manual setup step.</li></ul><h3>Security</h3><ul><li><strong class="text-hive-text font-semibold">CSP whitelist for loopback WebSocket</strong> — production builds now permit <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">ws://127.0.0.1:*</code> and <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">ws://localhost:*</code> under <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">connect-src</code>, so the new PTY transport works in shipped binaries (not just dev builds).</li></ul>]]></description>
    </item>
    <item>
      <title>v0.22.4 — 2026-05-12</title>
      <link>https://hiveterm.com/changelog#v0-22-4</link>
      <guid isPermaLink="false">hiveterm-v0-22-4</guid>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Windows: Claude Code, npm, Node and other agent bees now spawn reliably</strong> — replaced the PTY layer with the upstream <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">portable-pty-psmux</code> crate, eliminating the intermittent crash that left bees stuck in the Crashed state immediately after launch.</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Crashed bees no longer leave a blank pane</strong> — selecting a Crashed bee now shows the agent's exit code and the last 30 lines of output it produced before exiting, plus a prominent Restart button. Previously the pane stayed empty and the only signal was a tiny red status dot in the sidebar.</li><li><strong class="text-hive-text font-semibold">Auto-starting multiple Claude bees no longer races</strong> — when a project auto-started several agents at once on Windows, some would silently crash because the underlying CLI's lockfiles, AppData ACLs, and shell wrapper chain raced on shared resources. Spawn dispatch is now throttled to one bee every 250 ms, removing the concurrent access without any user-visible delay.</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Windows: <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">claude</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">npm</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">node</code> and other npm-installed CLIs now spawn cleanly</strong> — the leaner Windows spawn path introduced in v0.22.0 was bypassing <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">cmd.exe</code> for commands without shell metacharacters, which caused npm-style shims (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">claude</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">npm</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">node</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">python</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">cargo</code>...) to fail with <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">os error 193: %1 is not a valid Win32 application</code>. CreateProcessW doesn't honour <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">PATHEXT</code> and grabbed the extensionless Bash shim instead of the <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.cmd</code> sibling. Commands without an executable extension are now routed through <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">cmd.exe</code> again so Windows' <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">PATHEXT</code> lookup picks the right file. Programs given by absolute path with <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.exe</code>/<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.bat</code>/<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.cmd</code>/<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.com</code> keep the fast path.</li><li><strong class="text-hive-text font-semibold">Windows: duplicate "Help" menu</strong> — the v0.22.1 menubar showed two "Help" entries because the new "Check for updates…" command appended a fresh submenu instead of merging into the default Help that Tauri already creates on Windows and Linux. The command now lives inside the existing Help menu.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.22.1 — 2026-05-12</title>
      <link>https://hiveterm.com/changelog#v0-22-1</link>
      <guid isPermaLink="false">hiveterm-v0-22-1</guid>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Check for updates, anytime</strong> — a new menu entry (HiveTerm › Check for updates… on macOS, Help › Check for updates… on Windows and Linux) lets you pull the latest release without restarting the app.</li><li><strong class="text-hive-text font-semibold">Jump straight to the change</strong> — clicking a file in the Changes panel now scrolls the viewer directly to the first modified line, so you stop hunting through long files to find what's new.</li><li><strong class="text-hive-text font-semibold">See every file, just like your editor</strong> — the Explorer now mirrors the VSCode behavior and surfaces files listed in <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.gitignore</code> (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.env</code>, lockfiles, generated docs). Heavy directories like <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">node_modules</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">target</code>, and <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">dist</code> stay hidden so the tree remains usable.</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Cleaner button labels</strong> — the prominent action in the Diff panel is now "Commit &amp; Push" across English, Portuguese, and Spanish.</li></ul><h3>Performance</h3><ul><li><strong class="text-hive-text font-semibold">Lower CPU on every platform</strong> — the resource monitor now aggregates CPU and memory across each bee's full process tree, so wrappers like <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">cmd.exe /C</code> and shell pipelines report the work their children are actually doing.</li><li><strong class="text-hive-text font-semibold">CPU metrics that work on Windows</strong> — fixed a baseline-sampling bug where Windows showed a flat 0% for every bee. Per-bee and per-project CPU readings are now accurate on every OS.</li><li><strong class="text-hive-text font-semibold">Snappier tab switching with chatty agents</strong> — the hidden-pane PTY buffer now flushes in 64 KB chunks instead of one 2 MB write, eliminating the brief UI freeze that could appear when switching to a long-running Claude or Codex tab.</li><li><strong class="text-hive-text font-semibold">Stable memory under heavy git activity</strong> — the per-project file watcher now applies back-pressure to its event queue, preventing memory growth during large <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">git checkout</code> or <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">npm install</code> bursts on Windows.</li><li><strong class="text-hive-text font-semibold">Cleaner file picker on Windows</strong> — the Explorer's always-skip list (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">node_modules</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Build</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Vendor</code>, etc.) now matches case-insensitively, matching how NTFS treats those directory names.</li><li><strong class="text-hive-text font-semibold">Self-healing token tracking</strong> — when an agent CLI rotates or removes its session log, the token watcher now re-discovers the new file on the very next tick instead of going silent.</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">The "0 bees but limit reached" mystery</strong> — the Free-tier per-project limit was incorrectly counting bees from every project in the workspace, so users with multiple projects could be blocked from launching a fresh bee even when the target project was empty. Counting now correctly scopes to the project being launched.</li><li><strong class="text-hive-text font-semibold">Commands with paths that contain spaces</strong> — running <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">node "C:\Program Files\app\index.js"</code> (and any other command with quoted arguments) no longer mangles the arguments before reaching the binary. Affects every platform; most visible on Windows.</li><li><strong class="text-hive-text font-semibold">No more phantom "crashed" badges on Windows</strong> — when Windows recycled a PID inside the auto-restart window, the previous bee's exit could be wrongly applied to a freshly started bee. The watcher now identifies a spawn by <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">(pid, started_at)</code>, eliminating the false positive.</li><li><strong class="text-hive-text font-semibold">"You're up to date" dialog dismisses on click</strong> — the OK button on the manual update check now closes the dialog reliably.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.22.0 — 2026-05-11</title>
      <link>https://hiveterm.com/changelog#v0-22-0</link>
      <guid isPermaLink="false">hiveterm-v0-22-0</guid>
      <pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Agent instructions library</strong> — pick a system prompt from a curated set of dev-focused templates (Software Engineer, Software Architect, Front-End Developer, Back-End Developer, DevOps Specialist, Code Reviewer, Debugger, Refactoring Specialist, Test Author, Technical Writer, Product Developer, UI/UX Designer, Technical Product Manager) or write your own. Instructions are auto-loaded when the bee starts — natively via <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">--append-system-prompt</code> for Claude Code and <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">--system-instruction</code> for Gemini, and via a quick paste-into-prompt for every other CLI. Picking a template also names the bee after the role.</li><li><strong class="text-hive-text font-semibold">Per-project share toggle</strong> — choose whether each project's agent instructions stay private to you (default) or get committed to the repo so the whole team uses the same prompts. The choice is sticky across reloads.</li><li><strong class="text-hive-text font-semibold">Drag-and-drop files into any terminal</strong> — drag any file or folder from the Changes panel or Explorer into a terminal and the path lands in the agent's input as <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">@src/file.ts</code> for Claude / Gemini (native auto-resolve) or as the absolute path for Codex and other CLIs, so the agent opens the file directly instead of grepping for it.</li><li><strong class="text-hive-text font-semibold">Find in Files</strong> — VSCode-style multi-line content search across the whole project, with case-sensitive, whole-word, and regex toggles. Results group by file, expand inline, jump to the exact line + column.</li><li><strong class="text-hive-text font-semibold">File viewer with syntax highlighting</strong> — open any file in the project from the Explorer or a search result. Powered by Shiki, theme-aware, with line numbers, search-match highlighting, and Markdown rendering for <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.md</code> files.</li><li><strong class="text-hive-text font-semibold">Editor &amp; terminal font customization</strong> — pick from every monospace font installed on your system in Settings → Appearance. Live preview while you scroll the list.</li><li><strong class="text-hive-text font-semibold">Settings as a tab</strong> — Settings now opens as a regular tab in the tab bar instead of a modal overlay, so you can keep it open while you work and switch back to a terminal without losing your place.</li><li><strong class="text-hive-text font-semibold">Command palette (Cmd+K)</strong> — fuzzy-find any file in the project or jump to any action.</li><li><strong class="text-hive-text font-semibold">Auto-responsive panels</strong> — the sidebar and Changes panel collapse automatically when the window is below 600px wide, and restore when there's room again.</li><li><strong class="text-hive-text font-semibold">Multi-line inline diff</strong> — the file viewer now highlights changed *ranges*, not just whole lines, so you can see exactly which characters moved.</li><li><strong class="text-hive-text font-semibold">Per-agent CLI flag presets</strong> — the Add Agent modal now offers correct flag chips per CLI (e.g. Codex gets <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">--dangerously-bypass-approvals-and-sandbox</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">-s workspace-write</code>, etc. instead of the old <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">--full-auto</code> that the CLI no longer accepts).</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Sidebar tree connectors removed</strong> — cleaner, denser sidebar without the dotted ASCII tree lines.</li><li><strong class="text-hive-text font-semibold">Project Settings layout</strong> — directory, config file, gitignore toggle, share-agent-instructions toggle, and command count are now grouped as a clean "Overview" card.</li><li><strong class="text-hive-text font-semibold">Add Agent modal</strong> — collapsible Instructions section, searchable ComboPicker for templates, hidden Name field for agents (auto-generated and adopted from the agent's session title via Auto-rename).</li><li><strong class="text-hive-text font-semibold">Terminal link provider</strong> — clickable links now recognise tilde-prefixed paths (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">~/Projetos/...</code>) and resolve them against your home directory before opening.</li></ul><h3>Removed</h3><ul><li><strong class="text-hive-text font-semibold">Marketing-flavored templates</strong> — Marketing Strategist, Product Marketing Manager, SEO Specialist, Product Designer, and the generic QA Engineer template were dropped to keep the picker focused on the people who use HiveTerm: developers building and maintaining software.</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Auto-start agents finally auto-starting</strong> — <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">auto_start: true</code> on an agent in <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">hive.yml</code> now actually starts the agent on boot. Previously the logic excluded agent-type bees from the auto-start pass.</li><li><strong class="text-hive-text font-semibold">Paste-and-submit reliability on TUI agents</strong> — instructions pasted into Ink-based CLIs (Claude, Gemini, etc.) now reliably submit on first try.</li><li><strong class="text-hive-text font-semibold">Find in Files preserving indentation</strong> — multi-line patterns that depend on leading whitespace now match correctly.</li><li><strong class="text-hive-text font-semibold">File viewer respecting the chosen font</strong> — the browser default was overriding the picked monospace font inside the viewer's code blocks.</li><li><strong class="text-hive-text font-semibold">Settings tab no longer disappears when opening a file</strong> — opening a file from the Explorer keeps Settings pinned in the tab bar instead of closing it.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.21.3 — 2026-05-08</title>
      <link>https://hiveterm.com/changelog#v0-21-3</link>
      <guid isPermaLink="false">hiveterm-v0-21-3</guid>
      <pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Workspace loading splash</strong> — animated hive logo with a "Loading workspace… (X of Y projects)" indicator while project configs are parsed at boot. No more staring at a blank sidebar when restoring a workspace with many projects</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Bees not spawning in production builds</strong> — <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">spawn_bee</code> was hanging on the license <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">RwLock</code> because <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">phone_home</code> self-deadlocked: a Rust temporary lifetime kept a read guard alive across an assignment that also reached for a write guard on the same lock. The same-thread reader-then-writer pattern blocked forever. The phone-home update now snapshots the read state into local variables before taking the write lock</li><li><strong class="text-hive-text font-semibold">Spurious downgrade to Free tier on heartbeat</strong> — the phone-home heartbeat was overwriting an active Trial/Pro session whenever the server happened to return <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">tier: "free"</code>, even though the local signed token (with its server-issued <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">expires_at</code>) was still valid. Trial/Pro expiration is now determined locally from the token. Server revocation still applies via the explicit <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">revoked: true</code> branch</li><li><strong class="text-hive-text font-semibold">Tauri IPC blocked by Content-Security-Policy in release builds</strong> — the production CSP was missing <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">connect-src</code> entries for the Tauri IPC scheme (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">ipc:</code> / <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">http://ipc.localhost</code>) and the HiveTerm API endpoints, so every <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">invoke()</code> failed silently in release. Dev builds appeared to work because Tauri's dev profile relaxes CSP. The CSP now allows the IPC scheme and the <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">*.hiveterm.com</code> API hosts explicitly</li><li><strong class="text-hive-text font-semibold"><code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">spawn_bee</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">kill_bee</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">restart_bee</code> blocking the UI thread</strong> — sync Tauri commands run on the webview/main thread, which meant the <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">spawn_pty</code> fork+exec path froze the window when several bees came up at boot. The commands are now declared with <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">#[tauri::command(async)]</code> so Tauri dispatches them on the async runtime while keeping the synchronous signature (and the <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Channel&lt;Vec&lt;u8&gt;&gt;</code> PTY stream) intact</li></ul>]]></description>
    </item>
    <item>
      <title>v0.21.2 — 2026-05-08</title>
      <link>https://hiveterm.com/changelog#v0-21-2</link>
      <guid isPermaLink="false">hiveterm-v0-21-2</guid>
      <pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Bees stuck on the "Stopped" overlay after clicking Start</strong> — clicking Start (or any restart action) on a stopped bee fired a <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">kill_bee</code> first, which always emitted a stale <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">bee:status:stopped</code> event. The event reached the frontend after the spawn had already set <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">status = "running"</code> and reverted the UI to the idle overlay, even though the process was up and the PTY was streaming. The frontend no longer sends a redundant kill before each spawn (the backend already tears down the previous process atomically), and <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">kill_bee</code> only emits a <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">stopped</code> event when it actually killed something</li></ul>]]></description>
    </item>
    <item>
      <title>v0.21.1 — 2026-05-08</title>
      <link>https://hiveterm.com/changelog#v0-21-1</link>
      <guid isPermaLink="false">hiveterm-v0-21-1</guid>
      <pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">UI freeze on multi-project boot</strong> — opening a workspace with several projects no longer hangs the window for 30s+. The bee spawn pipeline (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">spawn_bee</code> / <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">kill_bee</code> / <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">restart_bee</code>) was running on the webview/main thread and serializing every fork+exec through it; it now runs on a background pool so the UI stays responsive while bees come up</li><li><strong class="text-hive-text font-semibold">Boot-time fork+exec storm</strong> — agents listed in <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">hive.yml</code> no longer auto-spawn when the workspace loads. They start the first time you open their tab. Server-style <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">command</code> bees marked <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">auto_start: true</code> still launch eagerly as before</li></ul>]]></description>
    </item>
    <item>
      <title>v0.21.0 — 2026-05-08</title>
      <link>https://hiveterm.com/changelog#v0-21-0</link>
      <guid isPermaLink="false">hiveterm-v0-21-0</guid>
      <pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">14-day Pro trial</strong> — new installs and existing free-tier users can start a 14-day Pro trial directly from the sidebar. No credit card required</li><li><strong class="text-hive-text font-semibold">Anonymous usage analytics</strong> — opt-out toggle in Settings → Privacy. Helps us understand where the product needs work. No PII, no project paths, no terminal output</li><li><strong class="text-hive-text font-semibold">Trial-expired project picker</strong> — if a trial ends with more projects open than the Free tier allows, a blocking modal lets you choose which to keep (or upgrade to Pro to keep them all)</li><li><strong class="text-hive-text font-semibold">Welcome to Pro modal</strong> — short celebration after activating a Pro license that recaps what's unlocked</li><li><strong class="text-hive-text font-semibold">"Auto-rename" toggle</strong> in the Add agent modal — uncheck to lock the agent name when adding it; default keeps the existing behavior of adopting the agent's session title</li><li><strong class="text-hive-text font-semibold">System theme as the default appearance</strong> — fresh installs follow the OS preference and update live when the OS toggles dark ↔ light. Manually picked themes still persist</li><li><strong class="text-hive-text font-semibold">Pro education accordion</strong> in the sidebar — collapsible bullets summarising what Pro unlocks; the whole row is clickable</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Free tier limits adjusted</strong> — up to 2 projects, 3 bees per project, 6 bees total, 1 MCP sub-agent. The new 14-day Pro trial covers anyone who needs more while evaluating</li><li><strong class="text-hive-text font-semibold">Sidebar license footer</strong> is a single row (status + Upgrade button + chevron) instead of multiple stacked cards</li><li><strong class="text-hive-text font-semibold">Localized pricing in the Upgrade and Trial-expired modals</strong> — both modals now show your region's price via the existing <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">/api/pricing</code> endpoint instead of hard-coded values</li><li><strong class="text-hive-text font-semibold">PR status badges</strong> (Merged / Open / Closed / Draft / Pending) now use legible colors under the light theme</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Windows Ctrl+V double-paste</strong> — clipboard contents now reach the PTY exactly once. Please re-test on a Windows machine and report back if it still misbehaves</li><li><strong class="text-hive-text font-semibold">File viewer "Code" mode showing stale content after an agent edits the file</strong> — re-opening a file always shows the current contents on disk</li><li><strong class="text-hive-text font-semibold">Focus lost when closing a file tab</strong> — the previously-active bee is restored when the last file tab closes</li><li><strong class="text-hive-text font-semibold">Setup project modal closing on drag-released-outside</strong> — selecting text inside the modal and releasing the mouse beyond its edge no longer cancels the setup</li><li><strong class="text-hive-text font-semibold">Trial users hitting the Free-tier paywall</strong> when spawning bees or sub-agents</li><li><strong class="text-hive-text font-semibold">First-launch race condition</strong> that could auto-start a trial for an existing user</li><li><strong class="text-hive-text font-semibold">White screen</strong> the first time the project setup modal finished detecting the project stack</li></ul><h3>Security</h3><ul><li><strong class="text-hive-text font-semibold">Trial token integrity</strong> — trial tokens are signed with the same Ed25519 keypair already used for Pro licenses; the private key never leaves the server. Tokens are bound to the issuing machine and rejected on any other</li><li><strong class="text-hive-text font-semibold">Telemetry payloads</strong> are explicitly allow-listed — no clipboard, no file contents, no terminal output ever leave the device</li></ul>]]></description>
    </item>
    <item>
      <title>v0.20.0 — 2026-05-07</title>
      <link>https://hiveterm.com/changelog#v0-20-0</link>
      <guid isPermaLink="false">hiveterm-v0-20-0</guid>
      <pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Material Icon Theme</strong> — file/folder icons in the FileTree, Changes list, and TabBar now use the open-source Material Icon Theme (1238 SVGs, MIT). Resolution cascades through filename → extension → language id (via Shiki's lang map) so <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">*.ts</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">*.php</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">*.rs</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">package.json</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Dockerfile</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">src/</code>, etc. all light up correctly. Icons copied to <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">public/file-icons/</code> by <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">scripts/copy-file-icons.mjs</code> (predev / prebuild / postinstall)</li><li><strong class="text-hive-text font-semibold">"Open file" picker</strong> in the All files tab — sticky search input at the top with fuzzy match, keyboard navigation (↑/↓/Enter/Esc), basename score weighted 1.5× over path score. Backed by a new <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">list_project_files</code> Rust command that walks the project respecting <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.gitignore</code> (max 50k files, skips <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.git</code>/<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.DS_Store</code>)</li><li><strong class="text-hive-text font-semibold">Reveal active file in FileTree</strong> — opening a file in the viewer auto-expands every ancestor directory and scrolls the row into view. New <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">revealPath</code> action on <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">fileTreeStore</code> handles the lazy load top-down so rows fill in from the root</li><li><strong class="text-hive-text font-semibold">Active file highlight in lateral</strong> — DiffFileList (Changes tab) and FileTree (All files tab) both highlight the currently active file viewer tab. Closing or switching tabs clears immediately</li><li><strong class="text-hive-text font-semibold">TabBar auto-scroll</strong> — opening a new file or switching tabs scrolls the tab strip so the active tab is always visible</li><li><strong class="text-hive-text font-semibold">Cmd+B branch switcher</strong> — toggle the branch dropdown from anywhere with <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">⌘B</code>. Chevron rotates 180° when open, dispatched via a window CustomEvent so dropdown state stays local to the header</li><li><strong class="text-hive-text font-semibold">Commit footer link</strong> — the last-commit row at the bottom of the diff panel is now a button that opens <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">&lt;remote&gt;/commit/&lt;sha&gt;</code> in the browser when the project has an HTTPS remote. Falls back to the previous read-only display for SSH-only / private remotes. Remote URL cached per-project in a new <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">lib/remoteUrl.ts</code> helper</li><li><strong class="text-hive-text font-semibold">Shared fuzzy match library</strong> — <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">src/lib/fuzzy.ts</code> centralizes the scoring used by the Command Palette and the new file picker</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Toolbar height alignment</strong> — FileViewer toolbar now uses <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">h-9</code> to match the TabBar / CenterHeader / DiffPanel headers, so the action icons line up with the search input on the right</li><li><strong class="text-hive-text font-semibold">Open in editor</strong> passes <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Cursor</code> explicitly to the backend so the picker doesn't fall through to <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">$EDITOR</code> (often <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">vim</code>/<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">nano</code>, which silently spawned a hidden TTY)</li><li><strong class="text-hive-text font-semibold">Removed close (×) button</strong> from the FileViewer toolbar — the per-tab close on the tab strip already covers it</li><li><strong class="text-hive-text font-semibold">Website /changelog</strong> — removed the GitHub Releases link since the repo is private</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Syntax highlighting + line numbers in code viewer</strong> — Shiki was failing silently because Tauri's strict CSP (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">default-src 'self'</code>) blocks the default Oniguruma WASM engine. Switched to <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">createJavaScriptRegexEngine()</code> (pure JS, no WASM). Highlighting and the gutter line numbers both come back; PHP, TS, Rust, etc. all render correctly</li><li><strong class="text-hive-text font-semibold">Project settings overlay blocking file tab clicks</strong> — clicking a file tab while the project settings panel was open looked like a no-op because the overlay sat on top. <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">fileViewerStore.clearActiveBee()</code> now also clears <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">showProjectSettings</code>, so activating a file tab dismisses the overlay</li><li><strong class="text-hive-text font-semibold">Sticky search header in the FileTree</strong> — removed the parent's <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">py-1</code> and the sticky's <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">mb-1</code> so tree rows no longer bleed through the gap above/below the search bar when scrolled</li></ul>]]></description>
    </item>
    <item>
      <title>v0.19.0 — 2026-05-07</title>
      <link>https://hiveterm.com/changelog#v0-19-0</link>
      <guid isPermaLink="false">hiveterm-v0-19-0</guid>
      <pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Multi-project performance</strong> — <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">useGitWatcher</code> now reconciles git watchers incrementally instead of tearing down and re-spawning every watcher whenever a project is added, removed, or its config updates. With 9+ projects open, adding/switching projects no longer fans out 27+ git IPC calls per change. Watcher subscription uses a stable id+path signature so unrelated project mutations don't re-run the effect</li><li><strong class="text-hive-text font-semibold">Visibility refresh scoped to active project</strong> — when the app regains focus, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">useGitWatcher</code> only refreshes the active project's diff state. Background projects keep their watcher running and pick up changes via push events. Drops focus-return cost from 3*N IPC calls to 1</li><li><strong class="text-hive-text font-semibold">Persistent Diff Panel per project</strong> — DiffPanel now stays mounted per project (like terminals do), hidden via CSS <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">display</code> toggling instead of unmount. Switching projects preserves commit-message draft, scroll position, file tree expansion, and active tab. Same persistence for the bottom-sheet variant on narrow windows</li><li><strong class="text-hive-text font-semibold">Booting overlay in TerminalPane</strong> — when a bee spawn or restart begins, a small "Iniciando…" overlay with a spinner is rendered over the terminal until the first PTY byte arrives. Bees attached to an already-running process with buffered output skip the overlay. Spawn errors clear the overlay so the idle state is reachable</li><li><strong class="text-hive-text font-semibold">Auto-collapse projects with no running bee</strong> — projects with bees configured but none running default to collapsed in the sidebar. Empty (no-bee) projects stay expanded so the user sees the empty state. Once the user clicks the chevron, the choice is persisted in <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">settingsStore.projectCollapsedByProject</code> and survives app restarts; the persisted preference always overrides the auto rule</li><li><strong class="text-hive-text font-semibold">Tighter sidebar tree connectors</strong> — bee/section tree elbow indent reduced from 16px (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">w-4</code>) to 10px (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">w-2.5</code>) for a more compact hierarchy</li><li><strong class="text-hive-text font-semibold">Visible kbd on diff panel toggle</strong> — the right-edge expand/collapse button shows the shortcut as a kbd badge inline (matching the GitHub Open button style); shortcut removed from tooltip since it's now visible</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Removed border-bottom from project settings header</strong> — the sticky <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Start all</code> header no longer renders a divider line under it</li></ul>]]></description>
    </item>
    <item>
      <title>v0.18.0 — 2026-05-07</title>
      <link>https://hiveterm.com/changelog#v0-18-0</link>
      <guid isPermaLink="false">hiveterm-v0-18-0</guid>
      <pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Right-side Diff Panel</strong> — git workspace pane per project: branch + ahead/behind, PR card (state-tinted background — purple Merged, green Open, red Closed/Conflicts, amber Pending, zinc Draft), file list with +/- numstat, two tabs <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">All files</code> / <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Changes N</code>. Auto-opens by default for every active project; user choice persisted per project. Default width 320px (drag-resize 280–720). Bottom-sheet variant on windows narrower than 1200px</li><li><strong class="text-hive-text font-semibold">Tab strip in Diff Panel</strong> — <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">All files</code> browses the full project tree (lazy <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">read_dir</code> Rust command, respects <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.gitignore</code> via the <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">ignore</code> crate, skips <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.git</code> / <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">node_modules</code> / <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">target</code> / <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">dist</code> / <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.DS_Store</code> and friends). <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Changes N</code> shows the modified file list with badge counter</li><li><strong class="text-hive-text font-semibold">Read-only File Viewer</strong> — click any file (in either tab) to open it as a tab in the center column. Shiki syntax highlighting (lazy-loaded singleton, ~37 grammars), Markdown render with raw/preview toggle (react-markdown + GFM + sanitize), image preview via <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">convertFileSrc</code>, unified diff render. Cmd+F search overlay with match highlighting + prev/next navigation</li><li><strong class="text-hive-text font-semibold">Three-column layout</strong> — TitleBar removed; each column owns its own h-9 top bar. Sidebar header reserves space for macOS traffic lights when expanded. Center column hosts breadcrumb + workspace folder pill + branch dropdown + Revisar (per-bee changes) + GitHub link. Diff panel column hosts PR chip + state pill + Commit / Push / Create PR buttons in a single bar that takes the PR's tone color</li><li><strong class="text-hive-text font-semibold">Commit / Push / Create PR</strong> — three direct git actions in the diff panel header. Inline forms (textarea + Cancel + Submit) instead of modals. Push only renders when <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">ahead &gt; 0</code> and an upstream exists, with a counter chip. Create PR is hidden on protected branches (main / master / trunk / develop / development) and shows an "uncommitted changes won't be in this PR" warning when the working tree is dirty. Both forms gain an <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Ask {agent}</code> button when an agent bee is running for the same project — clicking sends a prompt to its PTY (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">commit all changes with a descriptive message</code> / <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">create a pull request for the current changes</code>) and closes the form</li><li><strong class="text-hive-text font-semibold">Discard changes</strong> per file — hover-only undo button on each row in the Changes tab, with a confirm dialog before reverting. Tracked files restore via <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">git checkout HEAD -- &lt;path&gt;</code>; untracked files are deleted from disk. Path-traversal-safe</li><li><strong class="text-hive-text font-semibold">Rust file watcher (push-based, zero polling)</strong> — replaces the 3s <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">setInterval</code> refresh with a <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">notify</code> recursive watcher per project. Ignores <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.git/objects</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.git/lfs</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.git/logs</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">*.lock</code> files, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">node_modules</code>, build dirs, agent state dirs (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.claude</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.codex</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.cursor</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.gemini</code>, etc.) — and uses an allowlist for <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.git/</code> so only HEAD / index / refs/heads / refs/remotes flow through. Debounced 250ms. Frontend <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">useGitWatcher</code> listens for <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">git:changed</code> and refreshes the diff store, file tree, and CenterHeader branch info</li><li><strong class="text-hive-text font-semibold">Sidebar diff stats</strong> — per-project insertion/deletion totals (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">+2175 −70</code>) shown next to the project header in the sidebar</li><li><strong class="text-hive-text font-semibold">Sidebar footer expanded</strong> — Update pill, Free-tier usage + Upgrade CTA, Add project, theme + settings now live in the footer instead of a global title bar</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Lazy per-file diff</strong> — <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">get_git_changes</code> no longer returns the full diff blob (the heaviest single git subprocess in the refresh path). New <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">get_file_diff(dir, path)</code> is invoked only when a file is opened. Branch-switch and refresh latency drop ~3-5x on big repos</li><li><strong class="text-hive-text font-semibold">Branch-aware PR cache</strong> — PR cache key now includes the current branch, so a branch switch doesn't return the previous branch's stale PR</li><li><strong class="text-hive-text font-semibold">PR fallback on protected branches</strong> — when on main / master / develop / etc. and <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">gh pr view</code> returns no PR, fall back to <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">gh pr list --base BRANCH --state merged --limit 1</code> so the most recently merged PR shows on the base branch</li><li><strong class="text-hive-text font-semibold">Project switch is instant</strong> — <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">CenterHeader</code> reads branch / dirty / upstream from <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">useDiffPanelStore.branchInfo</code> (already kept fresh by the watcher) instead of fetching <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">get_git_branch</code> per switch. Remote URL cached per project at module level</li><li><strong class="text-hive-text font-semibold">TabBar height aligned to h-9</strong> — matches sidebar / center / diff column headers across all three columns</li><li><strong class="text-hive-text font-semibold">Diff panel opens by default</strong> — <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">diffPanelOpenByProject[id] !== false</code> (treats undefined as open). Closed only when the user explicitly toggles it off; the choice persists per project</li><li><strong class="text-hive-text font-semibold">Header height harmonization</strong> — every column header strip uses <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">h-9</code> so the three columns align across a single horizontal grid line</li><li><strong class="text-hive-text font-semibold">Shortcuts remap</strong> — Cmd+Shift+D now toggles the Diff Panel (was the per-bee Changes panel). Cmd+Shift+B toggles the left sidebar. Cmd+\ kept as an alias</li><li><strong class="text-hive-text font-semibold">Settings → Hotkeys</strong> updated with <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Toggle diff panel</code> row and the new <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Cmd+Shift+B</code> for sidebar toggle</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Windows: Enter key submits in Claude Code / Ink agents</strong> — <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">process_manager::write_pty</code> no longer translates <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\r</code> on Windows. <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">PSEUDOCONSOLE_PASSTHROUGH_MODE</code> (Windows 11 22H2+) forwards the input pipe untouched, so Ink's keypress parser sees <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\r</code> and treats it as Enter the same way it does on Mac/Linux. Earlier translations to <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\r\n</code> and to <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\n</code> both landed as newline insertions in multi-line input. PowerShell, cmd, and other cooked-mode shells continue to work because they accept either CR or LF as Enter</li></ul><h3>Removed</h3><ul><li><strong class="text-hive-text font-semibold">ChangesPanel</strong> (per-bee fullscreen modal) is gone — the Diff Panel covers the same data with a better UI. The old Cmd+Shift+D binding has been repurposed for the Diff Panel toggle. The legacy Revisar button in the per-bee status bar has been removed</li><li><strong class="text-hive-text font-semibold">TitleBar</strong> component deleted; its responsibilities moved into the per-column headers</li></ul>]]></description>
    </item>
    <item>
      <title>v0.17.1 — 2026-05-04</title>
      <link>https://hiveterm.com/changelog#v0-17-1</link>
      <guid isPermaLink="false">hiveterm-v0-17-1</guid>
      <pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Windows: Claude Code / Codex / Gemini raw-mode TUI agents no longer crash on first input</strong> — the upstream <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">portable-pty-psmux 0.9.3</code> enables <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">PSEUDOCONSOLE_WIN32_INPUT_MODE</code> unconditionally, which makes ConPTY re-encode every keystroke as the Win32 Input Mode escape sequence (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">ESC [ Vk;Sc;Uc;Kd;Cs;Rc _</code>) toward the child. Cooked-mode shells (cmd, PowerShell) decode this fine, but Ink/readline-based TUIs read stdin directly and treat it as garbage — Claude Code's first-run theme picker (v2.1.126) and any subsequent arrow-key/Enter/Esc input would crash the agent. v0.16.4 tried to compensate from the host side by encoding lone <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\r</code>/<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\x1b</code> as Win32 Input Mode but <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">PSEUDOCONSOLE_PASSTHROUGH_MODE</code> (Win11 22H2+) forwards bytes raw, so PowerShell saw the literal escape and broke; that change was reverted in v0.16.5. Real fix: vendor the crate as <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">portable-pty-hiveterm</code> under <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">src-tauri/vendor-portable-pty/</code> and drop the <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">WIN32_INPUT_MODE</code> flag from <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">base_flags</code> in <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">PsuedoCon::new</code> and <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">new_without_passthrough</code>. ConPTY falls back to plain VT input — both raw-mode TUIs and cooked shells handle that. Escape hatch: set <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">HIVETERM_WIN32_INPUT_MODE=1</code> to opt back in for editors that benefit from the richer key info (vim modifier keys, IME composition). The local <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">normalize_crlf_for_conpty</code> translation in <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">process_manager::write_pty</code> is kept as a defensive no-op for non-WIN32-Input ConPTY (it only triggers on lone <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\r</code>)</li></ul>]]></description>
    </item>
    <item>
      <title>v0.17.0 — 2026-04-30</title>
      <link>https://hiveterm.com/changelog#v0-17-0</link>
      <guid isPermaLink="false">hiveterm-v0-17-0</guid>
      <pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Per-bee recap line in the sidebar</strong> — every agent bee can now show a one-line summary of its most recent turn under its name in the project tree. The <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">recap_watcher</code> background thread polls each agent bee's PTY ring buffer (last 16KB, every 400ms) and scrapes Claude Code's native <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">* recap:</code> marker (emitted by Claude when its <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">awaySummaryEnabled</code> setting is on) and the multi-line <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">└ &lt;body&gt;</code> block produced by the <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">/recap</code> slash command. Continuation/wrapped lines are joined into a single sentence; CR-overwrites from TUI redraws are split apart so spinner status doesn't pollute the captured text. The recap is pushed back to the frontend via <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">set_recap</code> on <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">ProcessManager</code> and the new <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">bee:recap</code> Tauri event; long recaps wrap in a full-width row that sits below the bee row so hover-state on the metrics column never reflows the wrap. New REST endpoint <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">POST /recap { beeId | cwd, text }</code> lets external integrations push a recap directly to Queen</li><li><strong class="text-hive-text font-semibold">Sidebar recap visibility + Claude session recap toggle</strong> — Settings → Sidebar adds a "Agent recaps" toggle (default on) that controls only the sidebar render. Settings → Agents → Recap section adds a "Claude Code session recap" toggle that mirrors Claude's own <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">/config</code> → Session recap switch by writing/removing the <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">awaySummaryEnabled</code> key in <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">~/.claude/settings.json</code>. On open, the panel calls <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">get_claude_session_recap</code> to sync the UI with whatever the user has configured outside Hive — so flipping it in Claude <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">/config</code> and flipping it in Hive stay consistent. Both toggles persist and i18n labels ship in EN/PT/ES</li><li><strong class="text-hive-text font-semibold">Bottom-of-terminal breathing room</strong> — a fixed-height spacer (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">h-2</code>) sits between the xterm container and the status bar so the last line of TUI output (Codex's input box, Claude's <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Cooked for Xs</code>, plain shell prompts) doesn't crash into the status bar. The spacer is outside the xterm container so the FitAddon row math is untouched — earlier attempts to add bottom padding inside the xterm parent caused descenders of the last visible row to be clipped. Status bar height also bumped from <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">py-1</code> to <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">py-2</code> for visibility</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold"><code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">strip_ansi</code> translates <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">CSI &lt;n&gt; C</code> (cursor forward) into N literal spaces</strong> — Claude Code's TUI renderer emits inter-word spacing as cursor-move escapes rather than U+0020 chars (e.g. <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Opus\x1b[1C4.7\x1b[1C(1M\x1b[1Ccontext)</code>). The previous stripper consumed the escape and dropped the visual gap, producing <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Opus4.7(1Mcontext)</code> in the captured recap. The rewrite captures the CSI parameter, dispatches via <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">emit_csi_visual</code> based on the final byte, and emits N spaces for <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">C</code> / <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">a</code> (HPR). Other CSIs (SGR <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">m</code>, cursor up/down, etc.) are still stripped silently — they have no visible content to preserve</li><li><strong class="text-hive-text font-semibold"><code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">ProcessInfo.recap: Option&lt;String&gt;</code></strong> field added to the Rust struct (mirrored on the frontend <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">ProcessInfo</code> interface) so the recap travels with <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">list_bees</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">get_bee_status</code>, and any new bee snapshot. <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">set_recap()</code> truncates to 280 chars and treats empty string as "clear"; <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">find_bee_by_working_dir()</code> resolves the most recently-started bee for a given cwd so the <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">/recap</code> POST endpoint works even when the caller only knows the working directory (not the bee_id)</li><li><strong class="text-hive-text font-semibold"><code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">beeStore.setBeeRecap</code></strong> preserves Map identity when the recap value is unchanged (no spurious re-renders) and trims/clears empty strings to <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">null</code> so consumers can use a single <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">recap ?? null</code> check</li><li><strong class="text-hive-text font-semibold">TerminalStatusBar slightly taller</strong> — <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">py-1</code> → <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">py-2</code> improves visual weight against the dense status info row</li></ul>]]></description>
    </item>
    <item>
      <title>v0.16.7 — 2026-04-29</title>
      <link>https://hiveterm.com/changelog#v0-16-7</link>
      <guid isPermaLink="false">hiveterm-v0-16-7</guid>
      <pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">MCP project isolation enforced at the transport layer</strong> — sub-agents spawned via <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">spawn_bee</code> can no longer read output, write input, kill, restart, or even see status of bees in other projects. The Queen MCP server now resolves the calling bee from the TCP peer PID at SSE connect (and per-request for the streamable HTTP transport), walking the parent process chain via <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">sysinfo</code> until it finds a managed PID. The resolved <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">caller_bee_id</code> is plumbed through <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">CallContext</code> into every tool handler; <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">enforce_isolation()</code> is the single chokepoint on <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">read_output</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">write_input</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">kill_bee</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">restart_bee</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">get_bee_status</code>, and <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">list_bees</code> is filtered by the caller's project. Cross-project calls are rejected with <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">"project isolation: bee X (project A) cannot access bee Y (project B)"</code>. External MCP clients (curl, IDE plugins) without a resolvable caller still work — no project scope is implied. New module <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">caller_resolver.rs</code> performs the OS-specific peer port → PID lookup (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">lsof</code> on macOS, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">/proc/net/tcp</code> + <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">/proc/*/fd</code> on Linux, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">netstat -ano</code> on Windows). The pre-existing global "first running non-MCP bee" fallback that would non-deterministically attribute MCP spawns to whichever workspace happened to come first in the bee map is gone — that bug was responsible for spawning Codecs/Gemini agents into the Work workspace when the user invoked them from the Personal workspace</li><li><strong class="text-hive-text font-semibold"><code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">encoding: "screen"</code> for <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">read_output</code></strong> — full-screen TUI agents (Gemini, interactive Codex, k9s, htop) write their UI by replaying cursor moves, screen clears, and OSC color polls into the same region of the terminal. The 256KB ring buffer fills with redraw frames before the actual response can be retrieved, so <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">utf8</code> reads return raw escape-sequence soup. The new <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">screen</code> encoding replays the byte stream through a virtual VT100 (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">vt100</code> crate, 200×50 default, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">cols</code>/<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">rows</code> configurable up to 1000×1000) and returns just the visible terminal contents as plain text. In benchmark, a Gemini "good night" reply that was buried in 256KB of redraw bytes renders to 1935 chars of legible text</li><li><strong class="text-hive-text font-semibold">Voice transcription returns focus to the terminal</strong> — after the user clicks Stop on the voice button (or VAD auto-stops it), the transcribed text is written into the bee via <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">write_pty</code> and a <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">hiveterm:focus-terminal</code> window event is dispatched. <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">TerminalPane</code> listens for it and calls <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">terminalRef.current?.focus()</code> inside a <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">requestAnimationFrame</code>. The user can now press Enter immediately to submit instead of having to click back into the terminal. Skip-on-empty: whitespace-only transcriptions don't dispatch (avoiding spurious focus changes)</li><li><strong class="text-hive-text font-semibold"><code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">auto_register_codex_mcp</code> and <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">auto_register_gemini_mcp</code> refresh the port on every Hive startup</strong> — the default <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">queenMcpPort=0</code> means the OS assigns a fresh port on each launch. Codex's <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">~/.codex/config.toml</code> and Gemini's <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">~/.gemini/settings.json</code> were grabbing the port at toggle time and never updating, so MCP startup in those clients failed against a dead port until the user toggled the integration off and back on. Both functions now run alongside <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">auto_register_mcp</code> (Claude Code) right after the Queen binds. Decision matrix per client: section/entry present → rewrite URL with current port; absent + flag absent → first-run register + create flag; absent + flag present → respect the user's explicit disable. <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">set_codex_mcp</code> / <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">set_gemini_mcp</code> also touch the flag so a UI toggle is never overridden by auto-register on the next startup. Codex auto-registration uses pure TOML manipulation in the new <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">mcp_register</code> module (preserves comments / unrelated sections); Gemini uses JSON upsert that preserves all other top-level keys</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold"><code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">ProcessInfo.project_id: Option&lt;String&gt;</code></strong> — config-driven and frontend bees inherit the project from the bee_id prefix (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">{projectId}/{beeName}</code>), but MCP sub-agents (id starts with <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">queen/</code>) lose that signal in the id. The new field is captured at spawn time so <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">ProcessManager::project_of()</code> can return the authoritative project for any bee. Free fn <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">project_id_from_bee_id</code> provides the prefix-derivation rule (returns <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">None</code> for <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">queen/*</code> and unscoped ids). Used as the source of truth for MCP isolation</li><li><strong class="text-hive-text font-semibold"><code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">build_screen_response</code> and <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">build_read_response</code> extracted as pure helpers</strong> in <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">mcp_tools.rs</code> — both encoding paths now testable without <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Arc&lt;ProcessManager&gt;</code>/<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">AppHandle</code>. Existing <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">tool_read_output</code> delegates to them. <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">clamp_screen_dim</code> enforces 1×1 minimum and 1000×1000 maximum so a runaway caller can't request a multi-MB virtual grid</li><li><strong class="text-hive-text font-semibold">MCP tool <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">read_output</code> description updated</strong> to advertise the <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">screen</code> encoding, document when to prefer it (full-screen TUIs), and explicitly note that <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">utf8</code> returns the raw byte stream</li></ul>]]></description>
    </item>
    <item>
      <title>v0.16.6 — 2026-04-29</title>
      <link>https://hiveterm.com/changelog#v0-16-6</link>
      <guid isPermaLink="false">hiveterm-v0-16-6</guid>
      <pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Per-bee token tracking when multiple agent bees share a project</strong> — previously, two Claude (or Codex) sessions in the same <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">cwd</code> collided because <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">discover_session()</code> picked the newest <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.jsonl</code> in <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">~/.claude/projects/&lt;encoded-cwd&gt;/</code> and assigned it to every bee, so both displayed identical token counts. The watcher now stamps each bee with <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">started_at</code> (millis since epoch) at spawn and pairs the oldest unclaimed JSONL with the oldest unclaimed bee within a <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">[started_at - 5s, next_bee.started_at + 5s]</code> bracket. Subsequent spawns disambiguate by bracket, restart re-discovers the new session by excluding the bee's previous path from the claimed set, and Gemini (which writes a single shared <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">telemetry.log</code>) is mapped only to the first bee so siblings don't echo the aggregate</li><li><strong class="text-hive-text font-semibold">In-app update modal with rendered changelog</strong> replaces the native confirm dialog. The modal shows the new version, the user's current version, the release notes (mini-markdown renderer covers <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded"><strong class="text-hive-text font-semibold">bold</strong></code>, `<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded"> </code>code<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded"> </code><code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">, </code><a href="url" class="text-amber-200 hover:text-amber-100 underline underline-offset-2 decoration-amber-200/40 hover:decoration-amber-100" target="_blank" rel="noopener">text</a><code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded"> links, bullets, and headings), a download progress bar fed by the Tauri updater's </code>Started<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">/</code>Progress<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">/</code>Finished<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded"> events, and Install / Later / Skip controls. Skip persists </code>dismissedUpdateVersion` to settings so the same version stops nagging until a newer one ships</li><li><strong class="text-hive-text font-semibold">Persistent update pill in the title bar</strong> — when an update is available and not dismissed, an amber <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">↓ vX.Y.Z</code> button with a status dot appears next to the plan badge. Clicking it opens the update modal so the user can review the changelog before deciding to install</li><li><strong class="text-hive-text font-semibold">CI publishes the real changelog into <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">latest.json</code></strong> — <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">scripts/extract-changelog.sh</code> reads the <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">## [X.Y.Z]</code> section out of <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">CHANGELOG.md</code>, the release workflow pipes it through <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">$GITHUB_OUTPUT</code> into <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">tauri-action</code>'s <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">releaseBody</code>, and Tauri propagates that into the updater manifest's <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">notes</code> field. The updater's <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Update.body</code> now carries the actual release notes instead of the static "see CHANGELOG.md" link</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Voice record button no longer flashes on first click</strong> — the <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Waveform</code> canvas had no <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">width</code>/<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">height</code> attributes, so it claimed its default <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">300×150</code> intrinsic size for one frame after mount, expanding the recording pill before <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">useEffect</code> resized it. Subsequent clicks were warm enough to mask the reflow but the first cold click (cpal audio engine init delay on macOS) kept the flash visible. Fixed by setting an inline <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">style={{ width, height }}</code> so the layout box is locked from the first paint, and switching to <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">useLayoutEffect</code> so the bitmap dimensions apply before the browser paints</li><li><strong class="text-hive-text font-semibold">Standardized button contrast on the amber accent</strong> — <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">bg-hive-accent text-white</code> (~2.4:1 contrast, fails WCAG AA) was used in five places. Replaced with the codebase-standard <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">text-hive-amber-600</code> (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">#412402</code> warm-dark, ~9:1) in <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">UpdateModal</code> install button, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">VoiceButton</code> mic/stop buttons (icon <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">fill-white</code> → <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">fill-hive-amber-600</code> too), <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">UpgradeModal</code> activate, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">AccountTab</code> license activate, and <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">VoiceTab</code> provider toggle</li><li><strong class="text-hive-text font-semibold">Token total in sidebar and status bar now excludes cache_read / cache_creation</strong> — <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">BeeItem</code> and <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">TerminalStatusBar</code> previously summed all four counters when deciding whether to render the badge and when computing the displayed total, which inflated the headline number with cached input that the user did not pay re-tokenization for. Now both surfaces use <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">inputTokens + outputTokens</code>; the breakdown modal still shows the cache columns separately</li><li><strong class="text-hive-text font-semibold"><code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">ProcessInfo</code> now carries <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">started_at: Option&lt;u64&gt;</code></strong> populated in <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">process_manager::spawn_bee</code> and <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">spawn_bee_headless</code>. The frontend already had <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">startedAt</code> for uptime display; the backend field unlocks server-side time-based pairing (token watcher) without round-tripping through the UI</li></ul>]]></description>
    </item>
    <item>
      <title>v0.16.5 — 2026-04-25</title>
      <link>https://hiveterm.com/changelog#v0-16-5</link>
      <guid isPermaLink="false">hiveterm-v0-16-5</guid>
      <pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Revert v0.16.4's Win32 Input Mode encoding</strong> — the experimental re-encoding of bare Enter/Esc as <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">ESC [ &lt;Vk&gt;;&lt;Sc&gt;;&lt;Uc&gt;;&lt;Kd&gt;;&lt;Cs&gt;;&lt;Rc&gt; _</code> sequences regressed PowerShell on Windows: with <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">PSEUDOCONSOLE_PASSTHROUGH_MODE</code> active (Windows 11 22H2+), ConPTY forwards bytes raw to the child instead of decoding the Win32 Input Mode format, so PowerShell received the literal escape sequence as text and Enter stopped submitting commands. Restored v0.16.3 behavior: bare <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\r</code> is normalized to <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\r\n</code> for ConPTY (cooked-mode shells work), and <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\x1b</code> passes through unchanged. The raw-mode TUI Enter/Esc issue (Claude Code, Ink agents) remains under investigation — needs hardware-level debugging on the user's Windows build to pin down whether ConPTY's input pipe is buffering, whether Ink's keypress parser is ignoring <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\r\n</code>, or whether a different encoding is required for the specific Win10/Win11 build path</li></ul>]]></description>
    </item>
    <item>
      <title>v0.16.4 — 2026-04-25</title>
      <link>https://hiveterm.com/changelog#v0-16-4</link>
      <guid isPermaLink="false">hiveterm-v0-16-4</guid>
      <pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[]]></description>
    </item>
    <item>
      <title>v0.16.3 — 2026-04-25</title>
      <link>https://hiveterm.com/changelog#v0-16-3</link>
      <guid isPermaLink="false">hiveterm-v0-16-3</guid>
      <pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Windows: raw-mode TUIs (Claude Code trust prompt, Ink agents) now accept all keystrokes</strong> — the previous 0.16.2 attempt addressed only lone-CR buffering and depended on JS-side platform detection (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">navigator.platform</code>, deprecated and unreliable in WebView2). Root cause was deeper: <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">portable-pty</code> 0.8 created the ConPTY without <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">PSEUDOCONSOLE_WIN32_INPUT_MODE</code> (0x4), so once a child enabled raw mode, ConPTY's input translation dropped Enter, Esc, digits, arrows, and modifier-aware keys</li><li><strong class="text-hive-text font-semibold">Switched to <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">portable-pty-psmux</code> 0.9.3</strong> (drop-in fork of upstream <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">portable-pty</code> 0.9 from WezTerm, with <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">PASSTHROUGH_MODE + WIN32_INPUT_MODE + RESIZE_QUIRK</code> patches enabled). API-compatible — only <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Cargo.toml</code> changed</li><li><strong class="text-hive-text font-semibold">Moved CR→CRLF normalization from TS to Rust</strong> in <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">process_manager::write_pty()</code>, gated by <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">cfg!(target_os = "windows")</code> (compile-time, immune to runtime detection failures). Implementation uses <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Cow&lt;[u8]&gt;</code> for zero-alloc on the hot path (typing, escape sequences, paste with LF-only line endings)</li><li><strong class="text-hive-text font-semibold">Added <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">flush()</code> after every PTY write</strong> so bytes go through ConPTY's pipe immediately instead of waiting for the next write to nudge the buffer</li><li><strong class="text-hive-text font-semibold">Removed dead code</strong>: <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">src/lib/normalizeInput.ts</code>, its test file, and the <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">IS_WINDOWS</code> constant in <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">usePtyBridge.ts</code> — all superseded by the Rust-side fix</li></ul>]]></description>
    </item>
    <item>
      <title>v0.16.2 — 2026-04-25</title>
      <link>https://hiveterm.com/changelog#v0-16-2</link>
      <guid isPermaLink="false">hiveterm-v0-16-2</guid>
      <pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Windows: Enter key not confirming prompts in interactive CLIs</strong> — lone <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\r</code> (0x0D) emitted by xterm.js was being held in the ConPTY input buffer waiting for <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\n</code>, which stalled raw-mode prompts in Ink/readline-based agents (e.g. Claude Code's "trust this folder" confirm screen). Added <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">normalizeKeyInput()</code> utility (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">src/lib/normalizeInput.ts</code>) wired into <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">usePtyBridge.ts</code> that translates lone <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\r</code> to <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\r\n</code> only on Windows. Unix PTYs unchanged (kernel handles <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\r</code>→<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\n</code> via <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">ICRNL</code>). Multi-line paste with embedded <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\r\n</code> is preserved (regex uses negative lookahead).</li></ul>]]></description>
    </item>
    <item>
      <title>v0.16.1 — 2026-04-24</title>
      <link>https://hiveterm.com/changelog#v0-16-1</link>
      <guid isPermaLink="false">hiveterm-v0-16-1</guid>
      <pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">macOS microphone permission fix</strong> — added <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">com.apple.security.device.audio-input</code> entitlement via new <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">src-tauri/entitlements.plist</code>, wired through <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">bundle.macOS.entitlements</code> in <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">tauri.conf.json</code>. Without this entitlement, the hardened-runtime signature would silently inject zeros into the audio buffer (peak=0.0000) and macOS would never register HiveTerm in System Settings → Privacy &amp; Security → Microphone, making voice input impossible to enable on signed/notarized builds</li></ul>]]></description>
    </item>
    <item>
      <title>v0.16.0 — 2026-04-24</title>
      <link>https://hiveterm.com/changelog#v0-16-0</link>
      <guid isPermaLink="false">hiveterm-v0-16-0</guid>
      <pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Voice input for agent prompts</strong> — native microphone capture and cloud transcription, dictate prompts straight into any agent bee. Click the floating amber mic (bottom-right of the terminal) or press <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Cmd+Shift+M</code> to record; the transcribed text is written into the bee's input without auto-submitting, so you can review before sending</li><li><strong class="text-hive-text font-semibold">New Voice settings tab</strong> with provider selector (OpenAI <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">whisper-1</code> or Groq <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">whisper-large-v3</code>), local API key storage, "Test microphone" button with peak-level feedback, transcription language selector (11 options including auto-detect and follow-app-language), and configurable auto-stop on silence (slider from 0.5s to 5s, or fully disabled)</li><li><strong class="text-hive-text font-semibold">Animated waveform</strong> during recording — 28 centered bars driven by RMS frequency data from cpal, DPR-scaled canvas at 60fps</li><li><strong class="text-hive-text font-semibold">Voice Activity Detection (VAD)</strong> in Rust — auto-stops recording after N seconds of silence (configurable) once the user has spoken for at least 800ms, avoiding premature cutoffs and requiring zero click-to-stop</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Native audio capture via <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">cpal</code></strong> — cross-platform microphone access (macOS/Windows/Linux) with dedicated audio thread owning the stream, lock-free VAD state via <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">AtomicU64</code>/<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">AtomicBool</code>, and WAV encoding via <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">hound</code>. Eliminates WebView/<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">getUserMedia</code> dependency</li><li><strong class="text-hive-text font-semibold">Platform-aware error messages</strong> — silence detection returns OS-specific hints (macOS: "System Settings → Privacy &amp; Security", Windows: equivalent Windows path) via <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">cfg!(target_os)</code> dispatch in Rust</li><li><strong class="text-hive-text font-semibold">Whisper prompt biasing</strong> — per-language prompts (en/pt/es) with dev vocabulary ("git", "commit", "refactor", "função", "componente", …) dramatically reduce hallucinations like "ご視聴ありがとうございました" on short or quiet audio</li><li><strong class="text-hive-text font-semibold">macOS dev-mode mic permission</strong> — <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Info.plist</code> embedded in the binary via <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">__TEXT,__info_plist</code> Mach-O section (build.rs <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">rustc-link-arg</code>) plus ad-hoc codesigning with the correct <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">dev.hiveterm.desktop</code> identifier (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">sign-dev.sh</code>) so macOS TCC prompts correctly without requiring a full <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">.app</code> bundle</li><li><strong class="text-hive-text font-semibold">Custom range slider styling</strong> — <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">::-webkit-slider-thumb</code> + <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">::-moz-range-thumb</code> using hive theme CSS variables, readable in both light and dark modes</li><li><strong class="text-hive-text font-semibold">Styled language dropdown</strong> — <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">appearance-none</code> + Lucide chevron matching the hive theme</li></ul>]]></description>
    </item>
    <item>
      <title>v0.15.2 — 2026-04-16</title>
      <link>https://hiveterm.com/changelog#v0-15-2</link>
      <guid isPermaLink="false">hiveterm-v0-15-2</guid>
      <pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Windows: CMD window no longer flashes every 10 seconds</strong> — non-PTY helper commands (git branch polling, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">taskkill</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">explorer</code>, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">cmd.exe</code> env capture, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">reg</code> machine GUID) now spawn with <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">CREATE_NO_WINDOW</code>, eliminating the transient <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">cmd.exe</code> popup that appeared on Windows every time the status bar refreshed git state</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">New <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">NoWindowExt</code> trait</strong> (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">src-tauri/src/process_ext.rs</code>) — cross-platform helper that adds <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">CREATE_NO_WINDOW</code> on Windows and is a no-op elsewhere, applied to all 16 non-PTY <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Command</code> call sites (commands.rs, shell_env.rs, license.rs, process_manager.rs)</li></ul>]]></description>
    </item>
    <item>
      <title>v0.15.1 — 2026-04-15</title>
      <link>https://hiveterm.com/changelog#v0-15-1</link>
      <guid isPermaLink="false">hiveterm-v0-15-1</guid>
      <pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Image drag-and-drop now shows [Image #N]</strong> — dragging screenshots/images into agent terminals (Claude Code, etc.) now triggers proper image detection instead of showing raw file paths. Uses bracketed paste mode and writes image data to system clipboard so CLIs can recognize the image</li><li><strong class="text-hive-text font-semibold">Image paste uses bracketed paste</strong> — paste handler now sends paths via <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">terminal.paste()</code> instead of raw <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">write_pty</code>, ensuring consistent behavior with clipboard-aware CLIs on all platforms</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">New <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">copy_image_to_clipboard</code> command</strong> — decodes PNG files and writes RGBA pixel data to the system clipboard via arboard (cross-platform: macOS, Windows, Linux)</li></ul>]]></description>
    </item>
    <item>
      <title>v0.15.0 — 2026-04-15</title>
      <link>https://hiveterm.com/changelog#v0-15-0</link>
      <guid isPermaLink="false">hiveterm-v0-15-0</guid>
      <pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Token usage tracking</strong> — real-time monitoring of input/output tokens and cost for Claude Code, Codex, and Gemini agents. Reads session JSONL files (Claude/Codex) and OTel telemetry logs (Gemini) with 5s adaptive polling</li><li><strong class="text-hive-text font-semibold">Token details modal</strong> — click token stats in the status bar to see full breakdown: input, output, cache read, cache creation, cache hit rate, and estimated cost (Claude only)</li><li><strong class="text-hive-text font-semibold">Token display settings</strong> — configurable in Settings &gt; Sidebar: "All" (In/Out + cost), "Cost only", or "Never". Plus a master toggle in Settings &gt; Agents</li><li><strong class="text-hive-text font-semibold">Gemini telemetry toggle</strong> — one-click enable/disable of Gemini CLI local telemetry directly from Settings &gt; Agents (writes to ~/.gemini/settings.json)</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Quick-agent not switching project</strong> — adding an agent via context menu submenu or AddCommandModal now correctly selects the target project</li><li><strong class="text-hive-text font-semibold">Agent auto-start on add</strong> — agents now auto-spawn when TerminalPane mounts instead of relying on fragile setTimeout</li><li><strong class="text-hive-text font-semibold">Token session discovery</strong> — uses file creation time (not modification time) to avoid reading wrong session when multiple Claude instances share a project directory</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Reduced macOS energy consumption</strong> — resource monitor uses adaptive polling (5s active, 15s idle), granular Zustand selectors in TerminalPane, cursor blink paused on hidden terminals, memoized ProjectMetrics selector</li><li><strong class="text-hive-text font-semibold">Wider default layout</strong> — minimum window width 1280px (was 680px), sidebar default 400px (was 320px)</li><li><strong class="text-hive-text font-semibold">Compact status bar</strong> — action buttons are icon-only (Clear, Stop, Restart), "View changes" → "Review", "Open on GitHub" → "Open"</li></ul>]]></description>
    </item>
    <item>
      <title>v0.14.1 — 2026-04-15</title>
      <link>https://hiveterm.com/changelog#v0-14-1</link>
      <guid isPermaLink="false">hiveterm-v0-14-1</guid>
      <pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">High energy consumption on macOS</strong> — resource monitor now uses adaptive polling (5s active, 15s idle) instead of fixed 3s, reducing CPU wakeups by ~40%</li><li><strong class="text-hive-text font-semibold">Excessive re-renders in TerminalPane</strong> — replaced <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">useSettingsStore()</code> (whole-store subscription) with granular selectors, preventing N terminal re-renders on every settings change</li><li><strong class="text-hive-text font-semibold">Cursor blink on hidden terminals</strong> — cursor animation now pauses when a terminal tab is not visible, eliminating ~1 CPU wakeup/sec per hidden terminal</li><li><strong class="text-hive-text font-semibold">ProjectMetrics re-render storm</strong> — metrics selector now returns a stable primitive instead of a new object reference, avoiding re-renders every 5s per project</li><li><strong class="text-hive-text font-semibold">Quick-agent not switching project</strong> — adding an agent via context menu submenu or AddCommandModal now correctly selects the target project</li></ul>]]></description>
    </item>
    <item>
      <title>v0.14.0 — 2026-04-15</title>
      <link>https://hiveterm.com/changelog#v0-14-0</link>
      <guid isPermaLink="false">hiveterm-v0-14-0</guid>
      <pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Custom title bar</strong> — native macOS title bar replaced with custom overlay showing app title, plan badge ("Free — 2/3 projects"), and Upgrade button</li><li><strong class="text-hive-text font-semibold">MCP multi-client support</strong> — Queen MCP server now supports Codex (Streamable HTTP at <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">/mcp</code>) and Gemini (SSE at <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">/sse</code>) in addition to Claude Code, with per-client toggles in Settings &gt; Integrations</li><li><strong class="text-hive-text font-semibold">MCP auto-registration</strong> — HiveTerm automatically registers as an MCP server in Claude Code's <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">~/.claude.json</code> on first launch (no manual setup needed)</li><li><strong class="text-hive-text font-semibold">Settings close button</strong> — added X button with Esc keyboard shortcut to close the Settings panel</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Project reorder persistence</strong> — reordering projects via drag now correctly saves to the active workspace (was only saving to legacy <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">openProjectPaths</code>)</li><li><strong class="text-hive-text font-semibold">Terminal overflow</strong> — terminal content no longer overflows behind the status bar footer; added <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">overflow-hidden</code> to main area and xterm container</li><li><strong class="text-hive-text font-semibold">Settings modal clipping</strong> — agent edit modal now uses <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">absolute</code> positioning to stay within the settings panel instead of being clipped by <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">overflow-hidden</code></li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Minimum window size</strong> — enforced 680x400px minimum to prevent UI elements from being cut off</li><li><strong class="text-hive-text font-semibold">Sidebar footer cleanup</strong> — moved "Free — 2/3" badge from floating text to the title bar; simplified sidebar footer</li><li><strong class="text-hive-text font-semibold">CORS for MCP clients</strong> — opened CORS on Queen MCP server to allow local CLI clients (Codex, Gemini) to connect</li></ul>]]></description>
    </item>
    <item>
      <title>v0.13.0 — 2026-04-15</title>
      <link>https://hiveterm.com/changelog#v0-13-0</link>
      <guid isPermaLink="false">hiveterm-v0-13-0</guid>
      <pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Agent avatars in sidebar</strong> — agent bees now show their logo (Claude, Codex, Gemini, OpenCode, Cline) with a status badge overlay instead of the generic hex icon</li><li><strong class="text-hive-text font-semibold">PPP regional pricing</strong> — website now shows geo-localized pricing via Cloudflare Pages Functions (5 tiers: $99 US, €89 Europe, R$149 Brazil, $29 LATAM, $19 India/SEA)</li><li><strong class="text-hive-text font-semibold">Agent-specific CLI suggestions</strong> — Settings &gt; Agents now shows relevant flags per agent type (e.g. <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">--full-auto</code> for Codex, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">--yolo</code> for Gemini)</li><li><strong class="text-hive-text font-semibold">Dev/prod isolation</strong> — debug builds use <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">~/.hiveterm-dev/</code> for settings, license, and hooks to avoid conflicts with the installed release</li></ul><h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Free tier limits</strong> — count only running bees (stopped bees no longer block new spawns); check limits before spawning PTY to prevent orphaned processes; enforce per-project limit on MCP commands</li><li><strong class="text-hive-text font-semibold">Project count</strong> — "Free — X/3 projects" now counts globally across all workspaces, not just the active one</li><li><strong class="text-hive-text font-semibold">Workspace switch</strong> — switching or creating workspaces now clears the active terminal panel</li><li><strong class="text-hive-text font-semibold">Spawn error UX</strong> — errors shown in the stopped overlay with an "Upgrade to Pro" button instead of hidden behind the terminal</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Sidebar default width</strong> — increased from 240px to 320px</li><li><strong class="text-hive-text font-semibold">Tab bar setting</strong> — moved from Sidebar settings to Appearance &gt; Application</li><li><strong class="text-hive-text font-semibold">Projects default expanded</strong> — projects no longer collapse when switching workspaces</li></ul>]]></description>
    </item>
    <item>
      <title>v0.12.0 — 2026-04-14</title>
      <link>https://hiveterm.com/changelog#v0-12-0</link>
      <guid isPermaLink="false">hiveterm-v0-12-0</guid>
      <pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">License lost on reboot</strong> — machine fingerprint was using MAC address which changes on macOS due to Private Wi-Fi Address randomization. Now uses stable hardware UUID (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">IOPlatformUUID</code> on macOS, <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">/etc/machine-id</code> on Linux, Registry <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">MachineGuid</code> on Windows). Includes migration so existing tokens remain valid.</li></ul><h3>Changed</h3><ul><li><strong class="text-hive-text font-semibold">Auto-update via Cloudflare R2</strong> — update endpoint moved from GitHub Releases (inaccessible from private repo) to Cloudflare R2 at <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">dl.hiveterm.com</code>. Release workflow now automatically uploads artifacts to R2 after builds complete.</li><li><strong class="text-hive-text font-semibold">Website download URLs</strong> — now use versioned paths (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">dl.hiveterm.com/v0.12.0/...</code>) for better artifact management and rollback support.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.11.0 — 2026-04-13</title>
      <link>https://hiveterm.com/changelog#v0-11-0</link>
      <guid isPermaLink="false">hiveterm-v0-11-0</guid>
      <pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Toggle tab bar visibility</strong> — new setting to show/hide the tab bar for a cleaner workspace</li><li><strong class="text-hive-text font-semibold">macOS code signing &amp; Linux builds</strong> — CI release pipeline now includes code signing for macOS and builds for Linux</li></ul><h3>Security</h3><ul><li><strong class="text-hive-text font-semibold">Full security audit remediation</strong> — resolved all 12 findings from security audit (1 critical, 4 high, 6 medium, 5 low): - MCP server hardened with restrictive CORS and random port binding - Path traversal fixes in config loading and image reading (canonicalize + filename validation) - TOCTOU race condition fixed — license check moved inside write lock for atomic spawn - SSE session limits (max 50) with cleanup on disconnect - Settings and port validation with atomic writes - Token file permissions restricted to 0600 on Unix - Clipboard extension allowlist and hook script injection prevention</li></ul>]]></description>
    </item>
    <item>
      <title>v0.10.2 — 2026-04-13</title>
      <link>https://hiveterm.com/changelog#v0-10-2</link>
      <guid isPermaLink="false">hiveterm-v0-10-2</guid>
      <pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Cline agent not appearing</strong> — new built-in agents added in updates were invisible to existing users because persisted settings overwrote the defaults without merging new entries. Added a migration in <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">loadPersistedSettings</code> that detects missing built-in agents and appends them while preserving user customizations.</li></ul>]]></description>
    </item>
    <item>
      <title>v0.10.1 — 2026-04-13</title>
      <link>https://hiveterm.com/changelog#v0-10-1</link>
      <guid isPermaLink="false">hiveterm-v0-10-1</guid>
      <pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Cline agent tool</strong> — added Cline as a built-in agent option in Add Agent modal, quick-add menu, and auto-detect</li><li><strong class="text-hive-text font-semibold">License generation script</strong> — <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">create-license</code> script for partner/manual license generation</li></ul>]]></description>
    </item>
    <item>
      <title>v0.10.0 — 2026-04-12</title>
      <link>https://hiveterm.com/changelog#v0-10-0</link>
      <guid isPermaLink="false">hiveterm-v0-10-0</guid>
      <pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">License system</strong> — annual Pro license with free tier (3 projects, 5 bees/project, 20 total bees, 2 MCP sub-agents) and unlimited Pro tier</li><li><strong class="text-hive-text font-semibold">Ed25519 offline validation</strong> — license tokens verified locally without internet after activation, with 7-day grace period on expiry</li><li><strong class="text-hive-text font-semibold">Machine fingerprint</strong> — license tied to hardware (2 machines per license), SHA-256 of MAC + hostname + OS + arch</li><li><strong class="text-hive-text font-semibold">Account tab</strong> — new Settings &gt; Account tab showing plan status, license key activation/deactivation, and machine ID</li><li><strong class="text-hive-text font-semibold">Upgrade modal</strong> — shown when free-tier limits are hit, with license key input and purchase link</li><li><strong class="text-hive-text font-semibold">Sidebar badge</strong> — displays "Free — X/3 projects" for free-tier users</li><li><strong class="text-hive-text font-semibold">License API</strong> — Cloudflare Worker with Hono (4 endpoints: activate, deactivate, status, Stripe webhook) + KV storage + Resend email delivery</li></ul><h3>Changed</h3><ul><li>License enforcement at Rust command layer (spawn_bee, restart_bee) and MCP tools — cannot be bypassed from frontend</li><li>i18n: all license strings translated in English, Portuguese, and Spanish</li></ul>]]></description>
    </item>
    <item>
      <title>v0.9.5 — 2026-04-12</title>
      <link>https://hiveterm.com/changelog#v0-9-5</link>
      <guid isPermaLink="false">hiveterm-v0-9-5</guid>
      <pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">Changes panel: untracked files</strong> — new (untracked) files now display their full content as an all-additions diff instead of "No changes detected"</li><li><strong class="text-hive-text font-semibold">Sidebar filter crash</strong> — fixed app crash when typing in the filter input, caused by React hooks called after a conditional return</li></ul>]]></description>
    </item>
    <item>
      <title>v0.9.4 — 2026-04-10</title>
      <link>https://hiveterm.com/changelog#v0-9-4</link>
      <guid isPermaLink="false">hiveterm-v0-9-4</guid>
      <pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li><strong class="text-hive-text font-semibold">MCP bees placed in wrong project</strong> — inherit projectId from parent bee instead of fragile backend heuristic; fallback uses longest-match path matching</li><li><strong class="text-hive-text font-semibold">Literal <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\r</code> in write_input</strong> — handle <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\\r</code> escape sequence (agents sending <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">\r</code> for Enter appeared as text)</li><li><strong class="text-hive-text font-semibold">write_input docs</strong> — clarify that Codex/Gemini multi-line CLIs cannot submit via write_input; guide agents to use spawn_bee command argument</li></ul>]]></description>
    </item>
    <item>
      <title>v0.9.3 — 2026-04-10</title>
      <link>https://hiveterm.com/changelog#v0-9-3</link>
      <guid isPermaLink="false">hiveterm-v0-9-3</guid>
      <pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Tree connector sidebar</strong> — CSS tree layout (├ └) connecting AGENTS, TERMINALS, COMMANDS sections with continuous border lines</li><li><strong class="text-hive-text font-semibold">Sub-agents section</strong> — MCP-spawned bees (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">queen/</code> prefix) shown in a dedicated "Sub-agents" group branching from the agents tree</li><li><strong class="text-hive-text font-semibold">Agent auto-rename</strong> — agent bees rename from terminal title via <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">xterm.onTitleChange</code>, manual renames take priority</li><li><strong class="text-hive-text font-semibold">Double-click project header</strong> — collapse/expand project section</li><li><strong class="text-hive-text font-semibold">Font scale fix</strong> — all <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">text-[Npx]</code> converted to <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">rem</code> so Interface font scale applies to all text, not just spacing</li><li><strong class="text-hive-text font-semibold">Font scale tooltip</strong> — hover the A buttons to see exact pixel size</li></ul><h3>Changed</h3><ul><li>Section labels (AGENTS, TERMINALS, etc.) use <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">font-mono</code> for terminal aesthetic</li><li>Separator line between section title and counter in BeeGroup</li><li>"Filter bees..." replaces "Filter processes..." (i18n)</li><li>Add Agent modal: name field hidden, defaults to "Store locally only", auto-start on add, auto-increment duplicates</li><li>Long bee names truncated in status bar (200px max with tooltip)</li><li>Default font sizes: application 15px, terminal 13px</li><li><code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">HIVETERM_BEE_ID</code> env var injected in all spawned bees</li><li>MCP <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">spawn_bee</code> tool description updated with correct CLI flags</li><li>CLAUDE.md fully updated with architecture, file structure, rem convention, and release flow</li><li>Removed unused <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">NotificationError</code> variant</li><li>Fixed Windows CI: <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">test_get_git_branches_current_repo</code> resilient to shallow clones</li><li>Removed useless <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">usize &gt;= 0</code> comparison warnings</li></ul>]]></description>
    </item>
    <item>
      <title>v0.9.2 — 2026-04-10</title>
      <link>https://hiveterm.com/changelog#v0-9-2</link>
      <guid isPermaLink="false">hiveterm-v0-9-2</guid>
      <pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Notification system fix</strong> — reverted to Tauri plugin approach (notify-rust uses deprecated API on macOS 12+)</li><li><strong class="text-hive-text font-semibold">Hook notifications</strong> — <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">POST /notify</code> REST endpoint on Queen MCP server, configurable toggle in Settings &gt; Notifications</li><li><strong class="text-hive-text font-semibold">Auto-install Claude Code hooks</strong> — toggle in Settings registers <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">Notification</code> hook in <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">~/.claude/settings.json</code> automatically</li><li><strong class="text-hive-text font-semibold">Auto-rename agents</strong> — agent bees rename from terminal title via <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">xterm.onTitleChange</code> (strips <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">*</code> prefix, manual renames take priority)</li><li><strong class="text-hive-text font-semibold">Sub-agents section</strong> — MCP-spawned bees (<code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">queen/</code> prefix) appear in a dedicated "Sub-agents" group with tree connectors</li><li><strong class="text-hive-text font-semibold">Tree connector sidebar</strong> — CSS tree layout (├ └) connecting AGENTS, TERMINALS, COMMANDS sections and sub-agents</li><li><strong class="text-hive-text font-semibold">Add Agent UX</strong> — name field hidden (auto-generated), defaults to "Store locally only", auto-start on add, auto-increment duplicates</li><li><strong class="text-hive-text font-semibold">Double-click project header</strong> — collapse/expand project section</li><li><strong class="text-hive-text font-semibold">Auto-focus terminal</strong> — terminal receives focus when switching tabs</li></ul><h3>Changed</h3><ul><li><code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">HIVETERM_BEE_ID</code> env var injected in all spawned bees</li><li>MCP <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">spawn_bee</code> tool description updated with correct CLI flags</li><li>Section labels use <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">font-mono</code> for terminal aesthetic</li><li>Separator line between section title and counter</li><li>Long bee names truncated in status bar (200px max with tooltip)</li><li>"Filter bees..." replaces "Filter processes..." (i18n)</li><li>Duplicate name validation with red border and error message in Add modal</li><li>CLAUDE.md fully updated with current architecture, file structure, and conventions</li></ul>]]></description>
    </item>
    <item>
      <title>v0.9.1 — 2026-04-09</title>
      <link>https://hiveterm.com/changelog#v0-9-1</link>
      <guid isPermaLink="false">hiveterm-v0-9-1</guid>
      <pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Workspaces</strong> — organize projects by context (Work, Personal, Client) with a dropdown selector at the top of the sidebar</li><li><strong class="text-hive-text font-semibold">Workspace onboarding</strong> — first-access modal prompts for the first workspace name</li><li><strong class="text-hive-text font-semibold">Workspace CRUD</strong> — create, rename, and delete workspaces from the dropdown menu</li><li><strong class="text-hive-text font-semibold">Non-destructive workspace switch</strong> — bees keep running when switching workspaces; projects lazy-load on first visit</li><li><strong class="text-hive-text font-semibold">Duplicate project guard</strong> — warning dialog blocks adding the same project to multiple workspaces</li><li><strong class="text-hive-text font-semibold">New workspace hotkey</strong> (⌘⇧W) — quick-create workspace from anywhere, shown in dropdown and Hotkeys settings tab</li><li><strong class="text-hive-text font-semibold">Settings link in workspace dropdown</strong> — quick access to settings with ⌘, shortcut hint</li><li><strong class="text-hive-text font-semibold">Automatic migration</strong> — existing users get a "Default" workspace with their current projects, zero manual steps</li></ul><h3>Changed</h3><ul><li>Workspace selector aligns with TabBar height (32px) for consistent layout</li><li>Empty state shortcut updated from ⌘K to ⌘O</li><li>Active panel and tabs clear when switching workspaces</li></ul>]]></description>
    </item>
    <item>
      <title>v0.9.0 — 2026-04-09</title>
      <link>https://hiveterm.com/changelog#v0-9-0</link>
      <guid isPermaLink="false">hiveterm-v0-9-0</guid>
      <pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li><strong class="text-hive-text font-semibold">Git Changes Panel</strong> — modal diff viewer (⌘⇧D) with GitHub-style file sidebar, syntax-colored diffs, and search (⌘F) with match navigation</li><li><strong class="text-hive-text font-semibold">Git branch in status bar</strong> — shows current branch name with dirty indicator (*), clickable to open branch on GitHub when remote exists</li><li><strong class="text-hive-text font-semibold">Open on GitHub</strong> (⌘⇧G) — detects git remote URL, converts SSH to HTTPS, opens in browser</li><li><strong class="text-hive-text font-semibold">Agent action bar</strong> — footer in Changes modal with Commit, Create PR, Revert All buttons + free-form "Ask agent..." input that sends prompts directly to the running agent</li><li><strong class="text-hive-text font-semibold">Notification click-to-focus</strong> — clicking a desktop notification (crash, agent complete, bell) focuses the HiveTerm window and switches to the agent's tab</li><li><strong class="text-hive-text font-semibold">Git hotkeys in settings</strong> — new "Git" section in Hotkeys tab showing ⌘⇧D and ⌘⇧G</li></ul><h3>Changed</h3><ul><li>Git commands (status, numstat, diff) run in parallel via <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">std::thread::scope</code> for faster Changes panel loading</li><li>Changes button highlights amber only when working tree is dirty</li><li>Window title separator changed from em dash (—) to middle dot (·)</li></ul>]]></description>
    </item>
    <item>
      <title>v0.8.0 — 2026-04-09</title>
      <link>https://hiveterm.com/changelog#v0-8-0</link>
      <guid isPermaLink="false">hiveterm-v0-8-0</guid>
      <pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li>Complete i18n coverage (~130 new keys) for all UI components across EN/PT/ES</li><li>Terminal search with Cmd+F — match count, Enter/Shift+Enter navigation</li><li>Auto-start terminals on creation (Cmd+T, sidebar, hover button)</li><li>Project header hover actions: Start/Stop All, Open in Terminal, Reveal in Finder, Open in Editor</li><li>Cmd+W closes active tab with smart neighbor activation and confirmation dialog</li><li>Right-click context menu on tabs: Rename, Start/Stop/Restart, Remove</li><li>Context menu submenus — "Add agent" shows pre-configured agents for quick spawn</li><li>Hotkeys settings tab with keyboard shortcut reference</li><li>Native OS notifications (macOS/Windows/Linux) for crash, bell, and agent events</li><li>MCP <code class="font-mono text-[0.85em] text-amber-200/90 bg-amber-200/10 px-1 py-0.5 rounded">notify</code> tool — agents can send desktop notifications when tasks complete</li><li>Notifications settings tab with event toggles and behavior options</li><li>Keyboard shortcut hints (⌘1-9) shown in tab bar</li><li>Connected CPU/memory threshold settings to sidebar and process metrics</li></ul><h3>Fixed</h3><ul><li>Fixed "Open in editor" failing in production builds (missing login shell PATH)</li><li>Fixed terminal overlay blocking error output on crash — overlay only for stopped</li><li>Fixed new terminals not auto-starting when created</li><li>Fixed project not activating when adding terminal from another project</li><li>Fixed all missing accents in Portuguese and Spanish translations</li><li>Parent detection prefers original bee over MCP siblings</li></ul><h3>Changed</h3><ul><li>Removed unused "Tools" settings tab</li><li>Added tauri-plugin-notification dependency</li><li>Added @xterm/addon-search dependency</li><li>73 tests passing (notifications, settings, search, stores, i18n)</li></ul>]]></description>
    </item>
    <item>
      <title>v0.6.3 — 2026-04-07</title>
      <link>https://hiveterm.com/changelog#v0-6-3</link>
      <guid isPermaLink="false">hiveterm-v0-6-3</guid>
      <pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li>Keyboard shortcuts work when terminal focused (capture phase)</li><li>Reorder — Agent, Terminal, Command in context menu + palette</li></ul><h3>Added</h3><ul><li>Cmd+O / Ctrl+O opens project folder dialog</li><li>Add project button shows ⌘O kbd, removed ellipsis</li><li>Keyboard shortcuts — ⌘T terminal, ⌘⇧A agent, ⌘⇧N command</li><li>⌘E new agent, ⌘D new command — shortcuts + command palette</li></ul><h3>Changed</h3><ul><li>Release v0.6.3</li></ul>]]></description>
    </item>
    <item>
      <title>v0.6.2 — 2026-04-07</title>
      <link>https://hiveterm.com/changelog#v0-6-2</link>
      <guid isPermaLink="false">hiveterm-v0-6-2</guid>
      <pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Added</h3><ul><li>Clickable URLs in terminal — click to open in browser</li><li>Theme toggle shows Monitor icon for 'system' mode</li></ul><h3>Changed</h3><ul><li>Release v0.6.2</li></ul>]]></description>
    </item>
    <item>
      <title>v0.6.1 — 2026-04-07</title>
      <link>https://hiveterm.com/changelog#v0-6-1</link>
      <guid isPermaLink="false">hiveterm-v0-6-1</guid>
      <pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li>Stop button shows 'Stopped' not 'Crashed'</li><li>Start All activates each bee before restarting</li><li>Letter spacing default 0, add 0 option in settings</li><li>Stop button updates terminal overlay — emit status event on kill</li></ul><h3>Changed</h3><ul><li>Release v0.6.1</li></ul><h3>Changed</h3><ul><li>Remove splashscreen — causes more issues than it solves</li></ul>]]></description>
    </item>
    <item>
      <title>v0.6.0 — 2026-04-07</title>
      <link>https://hiveterm.com/changelog#v0-6-0</link>
      <guid isPermaLink="false">hiveterm-v0-6-0</guid>
      <pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li>Restart status race — child watcher checks PID before updating</li><li>I18n for IntegrationsTab — added EN/PT/ES translations</li><li>All auto_start bees spawn on app launch, not just the active one</li><li>MCP spawn_bee places bees under matching project, not always Queen</li><li>Attach_channel status check — match lowercase 'running' from serde</li><li>MCP kill_bee removes bee from sidebar via queen:bee-killed event</li><li>Write_input converts \n to carriage return for PTY Enter</li><li>Write_input accepts both 'data' and 'input' field names</li><li>Resolve all clippy warnings — zero errors with -D warnings</li></ul><h3>Changed</h3><ul><li>Queen MCP instructions in CLAUDE.md — agent naming, command, type</li></ul><h3>Added</h3><ul><li>Queen MCP server — multi-agent orchestration via MCP protocol</li><li>Queen MCP toggle in Settings &gt; Integrations</li><li>Projects with auto-start bees expand on launch</li><li>MCP spawn_bee auto-resolves agent command from Settings &gt; Agents</li><li>Spawn_bee tool description instructs descriptive naming for agents</li><li>Sub-agent tree view — children nest under parent in sidebar</li><li>Auto-rename parent to 'Orchestrator' when spawning sub-agents</li><li>Auto-detect parent agent — no parent_id param needed</li></ul><h3>Changed</h3><ul><li>Release v0.6.0 — Queen MCP Server</li></ul>]]></description>
    </item>
    <item>
      <title>v0.5.6 — 2026-04-06</title>
      <link>https://hiveterm.com/changelog#v0-5-6</link>
      <guid isPermaLink="false">hiveterm-v0-5-6</guid>
      <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li>Removing a bee no longer corrupts other bees' config</li><li>Removing a bee no longer crashes siblings with same name</li></ul><h3>Changed</h3><ul><li>Release v0.5.6</li></ul>]]></description>
    </item>
    <item>
      <title>v0.5.5 — 2026-04-06</title>
      <link>https://hiveterm.com/changelog#v0-5-5</link>
      <guid isPermaLink="false">hiveterm-v0-5-5</guid>
      <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li>Windows double paste — disable browser paste handler on non-macOS</li></ul><h3>Changed</h3><ul><li>Release v0.5.5</li></ul>]]></description>
    </item>
    <item>
      <title>v0.5.4 — 2026-04-06</title>
      <link>https://hiveterm.com/changelog#v0-5-4</link>
      <guid isPermaLink="false">hiveterm-v0-5-4</guid>
      <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li>Dynamic WebGL — only active terminal uses GPU context</li></ul><h3>Added</h3><ul><li>Sidebar UI polish — project headers with borders, spacing, chevron hover</li></ul><h3>Changed</h3><ul><li>Release v0.5.4</li></ul>]]></description>
    </item>
    <item>
      <title>v0.5.3 — 2026-04-06</title>
      <link>https://hiveterm.com/changelog#v0-5-3</link>
      <guid isPermaLink="false">hiveterm-v0-5-3</guid>
      <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li>Ctrl+C copies selection on Windows instead of sending interrupt</li><li>Set configKey on bees created via AddCommandModal</li><li>Disable Ctrl+C interrupt for agents — use UI buttons to stop</li></ul><h3>Changed</h3><ul><li>Release v0.5.3</li></ul>]]></description>
    </item>
    <item>
      <title>v0.5.2 — 2026-04-06</title>
      <link>https://hiveterm.com/changelog#v0-5-2</link>
      <guid isPermaLink="false">hiveterm-v0-5-2</guid>
      <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li>Windows UTF-8 encoding — set code page 65001 for cmd.exe and PowerShell</li></ul><h3>Changed</h3><ul><li>Only build Windows in CI — macOS built locally to save minutes</li></ul><h3>Changed</h3><ul><li>Release v0.5.2</li></ul>]]></description>
    </item>
    <item>
      <title>v0.5.1 — 2026-04-06</title>
      <link>https://hiveterm.com/changelog#v0-5-1</link>
      <guid isPermaLink="false">hiveterm-v0-5-1</guid>
      <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li>Modals only close via X/Cancel/Escape, not backdrop click</li></ul><h3>Changed</h3><ul><li>Release v0.5.1</li></ul>]]></description>
    </item>
    <item>
      <title>v0.5.0 — 2026-04-06</title>
      <link>https://hiveterm.com/changelog#v0-5-0</link>
      <guid isPermaLink="false">hiveterm-v0-5-0</guid>
      <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li>Rename doesn't break terminal — removed bees Map subscription</li><li>Windows icon — multi-size ICO (16/24/32/48/64/256)</li></ul><h3>Changed</h3><ul><li>Release v0.5.0</li></ul>]]></description>
    </item>
    <item>
      <title>v0.4.0 — 2026-04-06</title>
      <link>https://hiveterm.com/changelog#v0-4-0</link>
      <guid isPermaLink="false">hiveterm-v0-4-0</guid>
      <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li>Sync PTY size after spawn/restart — no more wrong columns</li><li>Projects start collapsed except the active one</li><li>Click project name to expand/collapse, double-click for settings</li><li>Standardize sidebar numbers font-mono + translate missing strings</li><li>Chevron toggles collapse, click name opens settings</li><li>Icon padding for macOS Dock — same size as other apps</li><li>Clear terminal on restart — fresh screen instead of stacking</li><li>Start button works on first click — spawn after terminal mounts</li></ul><h3>Added</h3><ul><li>Add 'Project settings...' to context menu</li><li>Terminal status bar with controls, CPU/memory, status</li><li>Exited/crashed overlay on stopped terminals</li></ul><h3>Changed</h3><ul><li>Release v0.4.0</li></ul>]]></description>
    </item>
    <item>
      <title>v0.3.3 — 2026-04-06</title>
      <link>https://hiveterm.com/changelog#v0-3-3</link>
      <guid isPermaLink="false">hiveterm-v0-3-3</guid>
      <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li>Respect auto_start=false + send Ctrl+C before kill for Docker</li></ul><h3>Added</h3><ul><li>Add Dank Mono to font family options</li></ul><h3>Changed</h3><ul><li>Release v0.3.3</li></ul>]]></description>
    </item>
    <item>
      <title>v0.3.2 — 2026-04-06</title>
      <link>https://hiveterm.com/changelog#v0-3-2</link>
      <guid isPermaLink="false">hiveterm-v0-3-2</guid>
      <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li>Icon rounded corners</li></ul><h3>Added</h3><ul><li>New honeycomb brand icon — 7 hexagons with gradient opacity</li><li>Kill process tree on close + quit confirmation dialog</li></ul><h3>Changed</h3><ul><li>Release v0.3.2</li></ul>]]></description>
    </item>
    <item>
      <title>v0.3.1 — 2026-04-06</title>
      <link>https://hiveterm.com/changelog#v0-3-1</link>
      <guid isPermaLink="false">hiveterm-v0-3-1</guid>
      <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li>Set TERM=xterm-256color for color support in PTY</li></ul><h3>Changed</h3><ul><li>Release v0.3.1</li></ul>]]></description>
    </item>
    <item>
      <title>v0.3.0 — 2026-04-06</title>
      <link>https://hiveterm.com/changelog#v0-3-0</link>
      <guid isPermaLink="false">hiveterm-v0-3-0</guid>
      <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li>Remove non-functional UI elements, dynamic Start/Stop all</li><li>Start all stays on settings page, spawns all processes</li><li>Settings panel closes when clicking bee or project in sidebar</li><li>Remove ESC and X button from settings panel</li><li>Deselect bee when opening global settings</li><li>Manual rename not overwritten by terminal title changes</li><li>Laravel detection suggests single 'composer run dev' command</li><li>Windows PTY — use cmd.exe instead of /bin/sh</li><li>Debounce terminal title rename to prevent re-render storms</li><li>Get_user_shell returns COMSPEC on Windows, SHELL on Unix</li><li>Force terminal refresh when becoming visible — fixes blank screen</li><li>Remove auto-rename via OSC title — was causing blank terminals</li><li>Rename uses store action, terminal fits at 50/150/500ms</li><li>Rename doesn't break terminal — use configKey for config lookup</li></ul><h3>Added</h3><ul><li>Platform-aware keyboard shortcuts — Ctrl on Windows/Linux, ⌘ on Mac</li><li>Rename agents, terminals, commands via right-click</li><li>Auto-rename bees from terminal title (OSC 0/2)</li><li>Re-add auto-rename from terminal title (OSC) — safe with configKey</li></ul><h3>Changed</h3><ul><li>Release v0.3.0</li></ul><h3>Changed</h3><ul><li>Remove auto-rename via OSC title — causes blank terminals</li></ul>]]></description>
    </item>
    <item>
      <title>v0.2.3 — 2026-04-06</title>
      <link>https://hiveterm.com/changelog#v0-2-3</link>
      <guid isPermaLink="false">hiveterm-v0-2-3</guid>
      <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li>Align bee hex badges with section icons in sidebar</li><li>Windows CI — shell env test accepts PATH or Path</li></ul><h3>Changed</h3><ul><li>Release v0.2.3</li></ul><h3>Changed</h3><ul><li>Inline controls next to hex badge, not at end of row</li></ul>]]></description>
    </item>
    <item>
      <title>v0.2.2 — 2026-04-05</title>
      <link>https://hiveterm.com/changelog#v0-2-2</link>
      <guid isPermaLink="false">hiveterm-v0-2-2</guid>
      <pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li>Add icon.ico for Windows build</li><li>Kill child processes on Drop + drag-drop enabled</li><li>Drag &amp; drop via Tauri native API — gets real file paths</li><li>Drag &amp; drop — quote paths with spaces, deduplicate</li><li>Drag &amp; drop only on visible terminal, escape shell special chars</li><li>Drag &amp; drop images — copy to temp with clean filename</li><li>Debounce drag &amp; drop — ignore duplicate events within 500ms</li><li>Icon picker uses native file dialog instead of directory scan</li><li>Add missing useEffect import in ProjectSection</li><li>Cmd+1-9 shortcuts scoped to active project, ordered like sidebar</li><li>Auto-restart respects live toggle changes + security fixes</li><li>Auto-start/restart saves false explicitly + smoother drag reorder</li><li>Project reorder via context menu (Move up/Move down)</li></ul><h3>Added</h3><ul><li>Paste images into terminal — saves as temp file, pastes path</li><li>Drag &amp; drop files/images into terminal</li><li>Filter processes — search by name or command in sidebar</li><li>Show project icon in sidebar — falls back to hex badge</li><li>Drag-to-reorder projects in sidebar</li></ul><h3>Changed</h3><ul><li>Release v0.2.2</li></ul><h3>Security</h3><ul><li>Fix 3 High severity issues from audit</li></ul>]]></description>
    </item>
    <item>
      <title>v0.2.1 — 2026-04-05</title>
      <link>https://hiveterm.com/changelog#v0-2-1</link>
      <guid isPermaLink="false">hiveterm-v0-2-1</guid>
      <pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li>Kill all running processes on app exit</li><li>Terminal rendering — only fit/resize the visible terminal</li></ul><h3>Changed</h3><ul><li>Release v0.2.1 — fix signing key format</li></ul>]]></description>
    </item>
    <item>
      <title>v0.2.0 — 2026-04-05</title>
      <link>https://hiveterm.com/changelog#v0-2-0</link>
      <guid isPermaLink="false">hiveterm-v0-2-0</guid>
      <pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[<h3>Fixed</h3><ul><li>Keep terminals alive on tab switch, Lucide icons, resizable sidebar</li><li>Auto-restart only on actual crashes, never on ephemeral terminals</li><li>Sidebar layout — labels next to icons, no green highlights, project borders</li><li>Use user's default shell ($SHELL) for terminals and PTY spawn</li><li>Spawn interactive shells directly without shell -c wrapper</li><li>Terminal spawn loop — stabilize usePtyBridge effect deps</li><li>Restart uses event-based approach instead of remount hack</li><li>Show Add agent/command buttons in empty sidebar sections</li><li>Enable Remove for agents and commands, not just terminals</li><li>Terminal width on initial mount + sidebar context menu for Add project</li><li>Deselect active bee when opening project settings</li><li>Project context menu not bubbling to sidebar Add project menu</li><li>Load project images via base64 instead of asset protocol</li><li>Project settings title syncs when switching projects</li><li>Right-click anywhere in project area shows project context menu</li><li>Replace native select with custom styled dropdown</li><li>Remove --dangerously-skip-permissions default, add quick-toggle flags</li><li>Add missing useSettingsStore import in Sidebar and BeeGroup</li><li>Terminal preview reflects settings, interface font scale applies</li><li>Reveal in Finder + Open in editor via Rust commands, system theme default</li><li>Unify theme toggle icons with Lucide, match Settings gear size</li><li>System theme support, interface scale default 14px</li><li>7 TypeScript errors breaking CI build</li><li>Start button re-spawns stopped bees via restart event</li><li>Start button — only restart if terminal was previously opened</li><li>Sanitize bee names in IDs for Tauri event compatibility</li><li>Commands run in project directory, not home</li><li>Commands not starting — State&lt;Arc&lt;ProcessManager&gt;&gt; mismatch</li><li>Restart/start — ignore kill errors, always re-spawn</li><li>Allow multiple agents with same name — unique IDs with timestamp</li><li>Terminal width/flash on tab switch — use visibility instead of display</li><li>Terminal fit on initial mount — double rAF for layout completion</li><li>Always show + Add buttons even when section has items</li></ul><h3>Changed</h3><ul><li>Add cross-platform build workflow for macOS, Windows, Linux</li><li>Build workflow only on PRs, not on every push to main</li></ul><h3>Added</h3><ul><li>Open project, shell env capture, auto-restart, sidebar controls</li><li>Ephemeral terminals, multi-project support, bee uptime display</li><li>Stack auto-detect, context menus, sidebar UI overhaul</li><li>Sidebar layout overhaul</li><li>Full project context menu — start/stop/restart all, add terminal, remove</li><li>Project settings panel with overview, settings, notifications, commands</li><li>Add Command modal + expandable command editor in project settings</li><li>Project icon picker from project images</li><li>Terminal theme follows light/dark mode</li><li>Project setup modal on first add</li><li>Test infrastructure + 43 tests, fix stop button and terminal padding</li><li>Rename to HiveTerm, dynamic title bar, dark native theme</li><li>Native confirmation dialog before removing agent/terminal/command</li><li>Global settings modal + i18n (PT/EN/ES) + Appearance tab</li><li>Sidebar settings tab with filter, sections, project/process headers, footer</li><li>Wire sidebar settings — show/hide filter, empty sections, footer</li><li>Agents settings tab with agent tools list, edit modal, auto-detect</li><li>Wire i18n translations to all components + connect terminal settings</li><li>Pre-configure popular agent tools as enabled by default</li><li>Replace generic dots with hexagonal Hive-branded status badges</li><li>Working Directory buttons with tooltips</li><li>Persist settings to ~/.hiveterm/settings.json, cross-platform</li><li>Persist open projects across app restarts</li><li>CPU/memory monitoring for running processes</li><li>Quick-pick agents from configured tools in Add Agent modal</li><li>Auto-updater with signing keys and check for updates</li></ul><h3>Changed</h3><ul><li>Release infrastructure — changelog, release workflow, version script</li><li>Release v0.2.0</li></ul><h3>Changed</h3><ul><li>Remove uptime display from sidebar bee items</li><li>Settings from modal overlay to inline panel</li></ul>]]></description>
    </item>
  </channel>
</rss>