Hive Desktop 0.2.0-dev.9
Pre-release
Pre-release
·
16 commits
to main
since this release
Downloads are served from Cloudflare R2, not GitHub (decision 0003); this release records the source changes for the dev channel.
- Artifacts: https://dl.hivedesktop.com/desktop/releases/0.2.0-dev.9/
- Checksums: https://dl.hivedesktop.com/desktop/releases/0.2.0-dev.9/SHA256SUMS
Terminal mode and the Chats area arrive, Grafana and exec join the connectors, and the app ships a signed macOS installer.
Added
- Terminal mode (experimental): tmux-backed sessions rendered by a GPU
atlas renderer, with searchable scrollback replay on attach, clickable
links, and pop-up terminals that open straight into a TUI from a chord.
Typography — family, weight, line height, letter spacing — is configurable. - The Chats area (experimental): workspaces, tmux-backed chats, and an
MCP catalogue. A chat can be pinned into the Code view's session tree to
stay in reach while you work. Deleting a workspace deletes its folder from
disk — its chats, its canvases, and everything else under it — behind a
confirmation that names the path it removes. - Canvases (experimental): a chat's agent can put markdown, links and
laid-out HTML on named canvases shown beside the conversation, via the
hive-canvasMCP server. HTML blocks are styled by Hive's own class
vocabulary, so stat tiles, card grids and callouts follow your theme instead
of whatever the model picked. Each canvas is a file in the workspace folder,
so it outlives the chat that made it. - Grafana connector for metrics, alerts, and IRM alert groups, with
Alertmanager filtering pushed server-side so large instances stay
responsive. sources.execconnector — run a command on the poll tick and ingest its
stdout as a snapshot.- Gitea connector for issues, pull requests, and notifications from a Gitea
or Forgejo instance, configured with typed filters rather than a query
string. Items land in the feed alongside GitHub's and route through the same
filters and actions. - Generic webhook source, with an uploaded image usable as its feed mark.
- A signed, notarized macOS
.dmginstaller beside the update zip, and
Linux releases for amd64 and arm64. - Pick the app's fonts from your installed families. Appearance lists the
fonts on your machine for the UI and monospace faces, not just the bundled
Inter and JetBrains Mono. - Hive sessions from the app — create one from a feed item or on its own,
manage them from the UI, and see which session an inbox item started. - Dry-run a flow against supplied input without touching live state.
- Actions declare inputs and render them into their templates, alongside a
richer default catalog and a native clipboard action type. - A notify terminal node, so a feed can notify on new items.
- In-app problem reporting to a private bucket, and a documentation site
with search on the landing page. - Send the app's own metrics, logs and traces to your OpenTelemetry
backend. Turn ontelemetryinsettings.yamlwith an OTLP endpoint and
instance id, and Hive exports Go runtime metrics, its log stream, and a
startup trace over OTLP — no collector to run. Every signal is tagged with
the build's version and release channel, so a dev build's data never mixes
with a release's.development.metricsserves the same metrics at
/metricson the local server for a scrape, with or without an endpoint
configured. - Secrets in settings are references, not secrets. The whole
telemetry
destination — endpoint, instance id and token — takesenv:NAME,
file:/path, or a 1Passwordop://vault/item/fieldreference, the same
string 1Password's Copy Secret Reference gives you, and Hive reads the
values at launch. The token must be a reference; pasting a credential in is
rejected, so a dotfiles-managedsettings.yamlstays safe to commit. !in the command palette runs a shell command in the Code view — the
rest of the line opens a window on the attached session and types it there,
so it runs in that checkout and the shell outlives it.- The command palette knows where you are. Code view lists the attached
session's windows and operations, every other session as an attach row, and
the configured session and window actions — none of which were reachable
from it before. - Your configured actions are in the palette. The selected inbox item's
actions are listed under its own reference, and running one opens its input
form exactly as the detail pane's cards do. - A
+on a repository in the session tree starts a session in it,
replacing the session count under the pointer. A workspace in the Chats
sidebar has the same+, and it starts a chat outright rather than opening
the new-chat form. - Drag a profile tile to reorder the rail (or move the focused tile with
Alt+Up/Down). The order is saved asprofiles.orderinsettings.yaml;
profiles you never move stay alphabetical behind the ones you place. - An optional status bar above a session (Settings ▸ Terminal), carrying
its branch, uncommitted and unpushed state, lines changed, and its pull
request's review and CI status — plus the open-in-editor and show-in-Finder
buttons a chat already had. The pull-request badge reads GitHub and any
Gitea or Forgejo instance you have connected, picked from the session's own
remote. - A Tasks overlay over hive's
hcissue tracker — a tree and detail split
with filters, text search, keyboard navigation, status changes, and
delete/prune, reached from a titlebar icon and the command palette, and,
from a terminal session's status bar, scoped to that session's repository.
A poll picks up changes made outside the app, such as from thehive hc
CLI. - The command palette has scope tabs — All, Go to, Actions, and Shell —
so you can narrow it to just navigation or just actions instead of the
whole ranked list.@,>, and!still jump straight into a scope as
you type. - The command palette opens with recent commands, device-local usage data
that survives restarts and is stored on this device rather than in your
settings file. Typed queries match fuzzily — scattered characters like
mkalrdfind "Mark all as read" — with title matches ranked above keyword
matches. - Keybindings can be chord sequences, not just single combos.
g i/
g c/g a/g t/g sjump to Inbox, Code, Chats, Tasks, and
Settings from anywhere, and a which-key hint pill shows the pressed key and
what it can lead to while a sequence is pending. ?opens a searchable keyboard-shortcut reference — its own tab in the
command palette. Pressing Enter on any row lands in Settings ▸ Keyboard,
pre-filtered to that command.- The macOS standards are wired up:
⌘,opens Settings, and⌘[/⌘]
step back and forward through view history, matching the title bar's own
buttons.
Changed
- Settings are sectioned by the surface they change, and the navigation is
grouped by the app's modes. - Auto-update and publishing moved to R2 channel manifests.
- The Activity view is a ledger, the inbox trash was redesigned, and the feed
gained date groups, hover actions, and mark-all-as-read. - One source message is split into per-entity feed items rather than one
combined row. - The New Session form preselects the agent
hivewould actually run, and the
dialog opens on ⌘N. - The command palette no longer lists commands that cannot run where you are
standing — feed commands over a terminal — and keeps item actions and flow
editing hub-only, since the flows canvas is profile-bound. - Quick terminal launchers are scoped to the session they run in rather than
shared across every session. - A quick terminal launcher opens where the terminal you are looking at is,
rather than in that session's checkout.lazygitfollows acdinto another
repository, and it works on the plain terminals under Terminals and on a
pinned chat, not just on a session. - A new terminal tab opens in the current tab's directory instead of the one
the session started in — so⌘Tafter acdlands where you were, and the
scratch terminal's tabs no longer all open in your home directory. /now focuses whichever search box is on screen — the feed's or the Code
view's session filter — as one shared shortcut (mod+frides along) rather
than a Code-only binding, so the two can no longer be rebound independently.- The Code view's commands group under "Code" in the palette and the keyboard
reference, matching the area's name rather than the old "Terminal" label. - The Chats sidebar lists every chat under its workspace, instead of a
workspace list filtering a flat list of chats below it. Workspaces fold and
unfold, and stay that way; ones with a running agent open on their own. It
reads like the feed sidebar now — one line, one icon per row — and the
divider between the two old lists is gone. - Every integration card in Settings wears its mark on the same ground, rather than three of them on a white tile and three on the app's own.
- The app icon is the four-node hive mark.
- The theme is persisted in
settings.yamlinstead of webview localStorage. - The flow editor's Deploy button no longer carries a menu. The debug panel
and the Copy prompt shortcut behind it were development affordances;
every prompt is still in Settings ▸ LLM prompts. - Deleting or recycling a session shows its git pre-flight as a checklist:
a red mark on uncommitted changes or unpushed commits that would be lost,
a green one on a check that came back clean.
Fixed
- Grafana alerts render as alerts, not as a bare heading and a timestamp. A
firing alert carries theAlertkind, a body with its description and the
value that tripped it, a link to the rule it was raised from, and its folder
as the container; alerts from one rule on several instances are separated by
their instance. IRM alert groups get the same kind and a body of their own.
Both nodes now put string tags in the canonicallabelsand carry the raw
label map asalertLabels— afunctionnode readinglabelsas a map
wantsalertLabelsinstead. Alerts already in the inbox keep the old payload
until they next change. - A source badge showing an image — Grafana, or a webhook or command source
with an uploaded mark — filled the badge edge to edge instead of sitting
inset like the glyph marks beside it. - Pasting into a terminal pane is sent as a paste instead of one Enter per
line, which no longer fires half a script on the way in. - A terminal recovers from broker overflow in place; the view is no longer
torn down and rebuilt underneath you. - tmux spawns in the resolved environment, so agent sessions launch.
- A dead terminal session is presented as not started rather than as an error.
- GitHub absence confirmation is batched, fixing the rate-limit N+1.
- Empty-scope inbox rows no longer wedge the flow consumer.
- The Linux build no longer depends on the BSD-only
syscall.Getsid. - A node editor in the flows canvas keeps what you typed when the flow
reloads underneath it, instead of reverting and letting Save write the
pre-edit values back.