Skip to content

Hive Desktop 0.2.0-dev.9

Pre-release
Pre-release

Choose a tag to compare

@hay-kot hay-kot released this 06 Sep 03:43
· 16 commits to main since this release
9576257

Downloads are served from Cloudflare R2, not GitHub (decision 0003); this release records the source changes for the dev channel.

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-canvas MCP 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.exec connector — 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 .dmg installer 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 on telemetry in settings.yaml with 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.metrics serves the same metrics at
    /metrics on 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 — takes env:NAME,
    file:/path, or a 1Password op://vault/item/field reference, 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-managed settings.yaml stays 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 as profiles.order in settings.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 hc issue 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 the hive 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
    mkalrd find "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 s jump 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 hive would 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. lazygit follows a cd into 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 ⌘T after a cd lands 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+f rides 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.yaml instead 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 the Alert kind, 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 canonical labels and carry the raw
    label map as alertLabels — a function node reading labels as a map
    wants alertLabels instead. 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.