0.12.7 #
The first release under the Hyperia-Terminal name β the terminal app, now named distinctly from its hyperia-sidecar
backend. Same application, updates in place (app identity unchanged, so existing installs auto-update). Windows is code-signed (Azure Trusted Signing), macOS is signed + notarized, Linux ships as AppImage + deb.
Highlights #
ποΈ Stream Deck Plus supportβ a new companion daemon (tools/deck-mcp
) turns a Stream Deck Plus into a physical control surface: focus/split/new-tab your panes from the touch strip and dials, switch apps from the keys.β¨οΈβ a first-class MCP client for scripts and lightweight agents: curated verbs (hyperia
CLIstatus
,run
,split
,focus
,open
,cd
, β¦), adoctor
health check, and aguide
. Build standalone withyarn build:cli
.π Shell integrationβ panes report live working directory and running app, with safecd
from the picker and agents.π― Agent focus that moves the paneβterminal_focus
(and the CLI / Stream Deck) now switch to the owning tab and focus the terminal, entirely in-window β no OS-window stealing.π§ Maximus structured extractionβ tool-result extraction uses JSON-schema structured output, reliable across models.
Terminal & panes #
- Pane focus fix:
terminal_focus
selects the pane's tabandfocuses it; consent requests switch to the target pane so the prompt is visible. - Panes/tabs are addressed by
name or id onlyβ the positionala/b/c
labels are gone (they confused agents). - Web panes show load status in the label (
404 / Unreachable / page title / host) instead of a placeholder; split + remount fixes. - Picker:
cd
via the shell-state dispatcher, recent-path filtering.
Identity & consent #
- New
tool cleanly separates
request_access
identity(who you are) fromaccess(consent to act on a pane). - Consent panel is a contained card; consent-wait timing fixed; secret-redaction hardening.
Windows polish #
- Taskbar/window/tray icon fixes:
AppUserModelId
set before window creation, tray usesicon.ico
, explicitwindow.setIcon()
, PNGβnativeImage
decode.
Build & CI #
- Windows signing
degrades gracefully to unsigned (with a loud warning) if Azure Trusted Signing is unavailable, so an outage never blocks the macOS/Linux release.
fail-fast: false
- resilient release gate β one platform failing no longer drops the others.
Downloads #
Windows:Hyperia-Terminal-0.12.7-x64.exe
(signed)macOS:Hyperia-Terminal-0.12.7-mac-x64.dmg
Β·β¦-mac-arm64.dmg
(signed + notarized)Linux:Hyperia-Terminal-0.12.7-x86_64.AppImage
Β·Hyperia-Terminal-0.12.7-amd64.deb
Nightly Build (unsigned) #
Automated unsigned nightly build from canary
(2b4acd59aeaaa09085a2bd4b55890f908cd6da07
).
These installers are not code-signed. Expect OS security prompts:
Windowsβ SmartScreen warning; chooseMore info β Run anyway.macOSβ Gatekeeper block; right-click βOpen, or run
xattr -dr com.apple.quarantine /Applications/Hyperia.app
.
For signed, notarized releases use the tagged versions on the Releases page.
0.11.1 #
v0.11.1
Hyperia v0.11.1 β containerized sidecar deployment (Topology A) + useβ¦
0.10.32 #
This release provides certificate signing for Mac and Windows as well as native Mac chip support for newer OSs.
Lots of new fixes, including colored tabs, shell pickers, Stickys notes and more.
v0.10.9 β Local model reliability + LAN-reachable sidecar #
Co-developed live with Antigravity (Gemini 3.5 Flash) over a shared workspace pane.
Highlights #
Local model reliability β structured JSON + parallel candidates + "none"
tool sentinel
OllamaProvider::stream
now constrains Ollama's output to a strict JSON schema (thought
-
optional
tool_call -
optional
reply
) via Ollama's format
field, and runs N=3 parallel candidate generations at different temperatures (0.2 / 0.7 / 0.9). The first candidate whose JSON validates against the active tool schema wins; the rest are aborted via tokio::select!
to free GPU memory.
A "none"
sentinel was added as a valid tool_call.name
value, so when the model has nothing to call it must explicitly select "none"
instead of inventing a tool name. Validation + event emission both short-circuit when name == "none"
, so the agent loop only sees real tool calls. (Commits 5ae64a2a
for the structured + parallel core, b2ab8e65
for the "none"
sentinel refinement.)
Why it matters: in v0.10.8, small local models (gemma4:e2b, etc.) routinely freelanced β inventing google:search
, refusing to acknowledge prior conversation context, or emitting tool-call-shaped prose without firing a real call. Schema-constrained decoding eliminates the freelance path. Parallel sampling at varied temperatures gives at least one candidate room to thread the needle on hard prompts. The "none"
sentinel closes the remaining gap where the model wanted to reply but felt obligated to put something in tool_call.name
.
Implementation scope is contained to provider.rs
. agent.rs
and api.rs
are unchanged β the structured response is translated back into the same ProviderEvent
stream (TextDelta
/ ToolCallStart
/ ToolCallDelta
/ ToolCallEnd
/ MessageStop
) the agent loop already consumes.
Other fixes since v0.10.8
(--bind <ip>
flag +HYPERIA_BIND
env var5ae64a2a
) β sidecar can now listen on0.0.0.0
(or any specific IP) for LAN-reachable MCP. Default stays127.0.0.1
. Replaces the userland Python forwarder workaround that was needed to expose the sidecar across machines. When bound to a non-loopback address, the sidecar emits a startup WARN β Hyperia's tools are full RCE, so the operator is told they're now exposed. -
Legacy ghost.ts BrowserWindow deleted(acba2a2d
, 1289 β 53 lines) β the agentic chat surface is fully unified on the shell pane (sidecar-served HTML at/shell
, hosted in a HyperiawebUrl
pane). The legacy IPC channel still routes βAsk Hyperia
menu entries open the shell pane in the focused window. Reset/continue/auto-reset/window.onerror ported to the shell before deletion so no regressions vs the old window. -
Stateless MCP transport(3ee2f446
) βrmcp::StreamableHttpServerConfig::stateful_mode = false
. Sidecar restarts (hot-swap, crash + respawn, fresh install) no longer break Claude Code's MCP client. Previously every restart returned HTTP 404 on every call until the user manually/mcp
β Reconnect; now restarts are invisible. -
Slow MCP calls fixed(0a043c79
) βget_screen
404 was emitting WARN through the shared tracing pipeline; a background poller asking for a long-closed tab generated 858/1000 log entries and serialized real MCP calls behind log I/O. Demoted todebug!
. Throughput restored. -
(.deb
postinst sets chrome-sandbox setuid7782331e
) β fresh Ubuntu 24.04 installs of v0.10.8 crashed immediately withFATAL setuid_sandbox_host.cc:166
. Electron-builder doesn't apply the setuid bit by default; the .deb'safter-install
script now runschown root:root && chmod 4755 /opt/Hyperia/chrome-sandbox
. Also fixed the broken/usr/local/bin/hyperia
symlink that pointed at a non-existent path. -
(install.sh
Linux branch6e723b18
) βsite/install.sh
now detects dpkg-based systems and downloads + installs the.deb
(with apt-get fallback), or falls back to the universal.AppImage
. Previously the Linux branch was a hardcoded "Linux builds are not yet available" message dating to v0.5.x.NOTE: the script in this repo is fixed; the public copy athyperia.nuts.services/install.sh
still needs to be redeployed (task#48).
Migration notes #
Conversation memory is now reset on shell-pane reopen if the sidecar still thinks a prior agent run is in flight. This prevents stuck sessions but means a planned "leave it running in the background then come back" workflow won't survive a refresh β by design, since the in-flight run is from a previous pane lifecycle.now open the shell pane instead of the legacy 520Γ700 popup window. Visual change; functional parity confirmed.Ask Hyperia
menu entriesis applied automatically on/opt/Hyperia/chrome-sandbox
permission fix.deb
install. Existing v0.10.8 installs that already worked around the bug manually can leave their4755
chmod in place β no conflict.
Signing status #
Windowsβ Signed via Azure Trusted Signing (publisher: DeepBlue Dynamics LLC). Built locally..exe
macOSβ Developer ID Application signed + notarized..dmg
/.zip
(x64 + arm64)Linuxβ Unsigned (typical for these formats)..deb
+.AppImage
Known issues / open follow-ups #
- Task
#48β
site/install.sh
deploy tohyperia.nuts.services
still pending. OPEN
issues#62-66 (Maximus stack: Streamable HTTP proxy, tool-interception list, status tool, settings UI) β not part of this release; tracked separately.
π€ Drafted with Claude Code, co-developed with Antigravity (Gemini 3.5 Flash) over shared workspace pane c.
v0.10.8 β Agentic shell pane + tool_mount + model picker #
Highlights #
Agentic shell pane
The chat surface is now a Hyperia pane (webUrl
pane type, served from the sidecar at /shell
) rather than a separate BrowserWindow. Right-click anywhere β Hyperia Shell. The legacy ghost BrowserWindow is kept as a fallback for one more release.
tool_mount
SSE event
The agent can ship a self-contained HTML+CSS+JS widget into the chat scrollback. Iframe-hosted with postMessage
RPC; widgets fetch data via GET /api/ghost/widget/:id/data
and queue actions for the agent's next turn via POST /api/ghost/widget/:id/action
. Foundation for downstream features (DOM inspector, thermodynamic bookmark graph).
Model picker + ollama auto-scan
- Capabilities endpoint calls ollama's
/api/tags
and lists installed models. - Clickable
model
field in the shell's status strip opens an inline picker; selection writesconfig.agent.{provider,model}
viaPOST /api/ghost/set-model
. - When ollama is reachable and no model is configured, the sidecar auto-picks the first installed non-specialist model. No more hardcoded
llama3.2
fallback that 404s when not pulled.
Bootstub Level-0 micro-agent
Pure Rust state machine, no LLM dependency. Runs when /api/ghost/capabilities
reports level: "none"
β recognizes install ollama
, paste anthropic token sk-ant-β¦
, what's possible
, show config
, etc. The shell is always interactive, even on a fresh install.
Hardwired typed commands in the shell
Phrases that match a UI affordance fire it deterministically β no LLM round-trip, no hallucinated tool names:
change model
/switch model
/pick model
β opens the pickerlist models
/show models
β installed ollama listshow config
/doctor
/version
/commands
Pasted/dropped assets
Paste a screenshot (Win+Shift+S then Ctrl+V) or drag a file onto the shell. Image/PDF/text assets land in ~/.hyperia/assets/<id>.<ext>
and render inline as asset rows with thumbnail for images.
Fixes since v0.10.7
terminal_run Enter not submitting in TUIsβ Claude Code, vim, and other input-mode TUIs sometimes swallowed the trailing\r
. Now command + Enter ship in one atomic PTY write.Tab nameβ'''
bugauto_describe
now strips smart quotes, double quotes, backticks, and sentence-ending punctuation in one pass instead of a brittle chain.Conversation memory + tool honesty in agent system prompt β small local models stop refusing to use what the user told them, stop hallucinatinggoogle:search
.- Dropped dead
hasAgentConfigured()
helpers and unsafe-any
rpc casts (lint clean).
Signing #
Windowsβ Signed via Azure Trusted Signing (publisher: DeepBlue Dynamics LLC). Built locally and uploaded; CI is not yet wired with the signing secret..exe
macOSβ Signed with Developer ID Application + notarized, uploaded separately from the Mac build..dmg
π€ Generated with Claude Code
v0.9.0 β Maximus tokenmax layer #
What's new #
Maximus tokenmax β iterative Ollama-powered compression for tool results
- Ghost agent tool results now run through a 3-stage pipeline: classify content type β derive extraction strategy β apply iteratively until stable (up to 3 passes)
- Annotates every result with
[tokenmax type=X pattern=Y src=ollama/Ni AβBchars]
so agents always know what was filtered - Adaptive hints in output:
raw=true
to get full content,maximus_explain
to see the strategy used - Ferricula-backed pattern memory β learned extraction patterns persist across sessions
- Offline heuristic fallback (cargo-test, JSON, git-diff, Rust compiler output, HTTP responses) when Ollama is unavailable
maximus_explain
tool β see content type, strategy, compression ratio, and iteration count from the last extractionraw=true
param added toterminal_run
,terminal_screen
,file_read
,tab_snapshot
,shell_state
- External MCP agents get the same tokenmax treatment via the Hyperia MCP server
Installation #
Download and run Hyperia-0.9.0-x64.exe
. Signed with Azure Trusted Signing.