diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0ac6a71d..ef32c480 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,17 @@ All notable changes to OpenOrbit are documented in this file.
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
and this project uses [Semantic Versioning](https://semver.org/).
+## [0.12.6] - 2026-09-25
+
+### Added
+
+- Added `orbit --version` for inspecting the installed OpenOrbit version.
+
+### Fixed
+
+- Aligned issue discussion typography with the surrounding detail view.
+- Kept Run-detail log content within its tab and made the OpenTelemetry trace panel scroll only when needed.
+
## [0.12.5] - 2026-09-25
### Fixed
diff --git a/frontend/package.json b/frontend/package.json
index 49dd9861..33977c67 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -1,7 +1,7 @@
{
"name": "agent-improvement-console-ui",
"private": true,
- "version": "0.12.5",
+ "version": "0.12.6",
"type": "module",
"scripts": {
"dev": "vite",
diff --git a/frontend/src/features/evaluations/run-detail-log-panels.tsx b/frontend/src/features/evaluations/run-detail-log-panels.tsx
index 9652824b..a7d65507 100644
--- a/frontend/src/features/evaluations/run-detail-log-panels.tsx
+++ b/frontend/src/features/evaluations/run-detail-log-panels.tsx
@@ -15,5 +15,5 @@ export function CombinedLogPanel({ steps, locale, empty, orbitLogs, targetLogs,
timestamp: entry.timestamp,
value: `[${entry.level ?? "info"}]${entry.source ? ` ${entry.source}` : ""} ${entry.message}`,
}));
- return
{orbitLogs}
{logSteps.length ? : {empty}
}{targetLogs}
{targetLines.length ? : {empty}
} ;
+ return {orbitLogs}
{logSteps.length ? : {empty}
}{targetLogs}
{targetLines.length ? : {empty}
} ;
}
diff --git a/frontend/src/features/issues/discussion.css b/frontend/src/features/issues/discussion.css
index 9d5ef82b..78089553 100644
--- a/frontend/src/features/issues/discussion.css
+++ b/frontend/src/features/issues/discussion.css
@@ -2,9 +2,9 @@
.issue-discussion__messages { display:grid; gap:10px; max-height:360px; overflow-y:auto; padding:4px 8px 4px 0; }
.issue-message { display:grid; gap:6px; padding:12px; border:1px solid var(--line); border-radius:9px; background:var(--surface-raised); }
.issue-message header { display:flex; align-items:baseline; justify-content:space-between; gap:12px; }
-.issue-message header strong { font-size:12px; }
+.proposal-detail .issue-message header strong { font-size:11px; }
.issue-message time,.issue-message small { color:var(--muted); font:10px 'DM Mono',monospace; }
-.issue-message p { white-space:pre-wrap; }
+.proposal-detail .issue-message p { margin:0; font-size:11px; line-height:1.55; white-space:pre-wrap; }
.issue-discussion__composer { display:grid; gap:8px; padding:12px; border:1px solid var(--line); border-radius:9px; background:var(--bg); }
.issue-discussion__composer textarea { min-height:96px; resize:vertical; }
.issue-discussion__composer .modal-actions { justify-content:flex-end; }
diff --git a/frontend/src/theme-overrides.css b/frontend/src/theme-overrides.css
index dd14be56..91341261 100644
--- a/frontend/src/theme-overrides.css
+++ b/frontend/src/theme-overrides.css
@@ -67,6 +67,7 @@ footer { display:flex; align-items:center; justify-content:space-between; margin
.proposal-history { display:grid; gap:14px; }.proposal-history .panel-head { margin-bottom:3px; }.proposal-history .hint { max-width:650px; }.proposal-filters { display:flex; gap:8px; flex-wrap:wrap; }.proposal-filters select { width:auto; max-width:230px; }.proposal-summary { display:flex; gap:8px; flex-wrap:wrap; }.proposal-summary span { display:flex; align-items:baseline; gap:6px; padding:8px 10px; border:1px solid var(--line); border-radius:7px; color:var(--muted); background:var(--bg); font-size:10px; }.proposal-summary b { color:var(--text); font:600 16px 'DM Mono',monospace; }.proposal-list { display:grid; border-top:1px solid var(--line); }.proposal-row { display:flex; justify-content:space-between; gap:14px; width:100%; padding:13px 2px; border:0; border-bottom:1px solid var(--line); color:var(--text); background:transparent; text-align:left; }.proposal-row:hover { background:var(--surface-raised); }.proposal-row > div:first-child { display:grid; min-width:0; gap:4px; }.proposal-row small,.proposal-row span { color:var(--muted); font-size:10px; }.proposal-row strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12px; }.proposal-row__meta { display:grid; justify-items:end; align-content:center; gap:6px; white-space:nowrap; }.modal--proposal-detail { width:min(760px,100%); }.proposal-detail { display:grid; gap:18px; }.proposal-detail__summary { display:flex; align-items:center; gap:10px; flex-wrap:wrap; color:var(--muted); font:10px 'DM Mono',monospace; }.proposal-detail section { display:grid; gap:8px; }.proposal-detail h3 { margin:0; font-size:12px; }.proposal-detail p { margin:0; color:var(--muted); font-size:12px; line-height:1.6; }.proposal-detail pre { margin:0; padding:10px; overflow:auto; border-radius:7px; background:var(--bg); color:#8fb8ff; font:11px/1.55 'DM Mono',monospace; white-space:pre-wrap; }.proposal-detail dl { display:flex; flex-wrap:wrap; gap:16px; margin:0; }.proposal-detail dl div { display:grid; min-width:120px; gap:3px; }.proposal-detail dt { color:var(--muted); font-size:9px; text-transform:uppercase; }.proposal-detail dd { max-width:480px; margin:0; overflow-wrap:anywhere; font:11px 'DM Mono',monospace; }.proposal-timeline { display:grid; gap:9px; margin:0; padding:0; list-style:none; }.proposal-timeline li { display:flex; align-items:center; gap:10px; padding-left:10px; border-left:2px solid var(--line); }.proposal-timeline li > div { display:grid; gap:3px; }.proposal-timeline strong { font-size:11px; }.proposal-timeline small { color:var(--muted); font-size:10px; } @media(max-width:720px){.proposal-history .trend-head { align-items:stretch; }.proposal-filters select { width:100%; max-width:none; }.proposal-row { align-items:flex-start; flex-direction:column; }.proposal-row__meta { justify-items:start; }.proposal-detail__summary { align-items:flex-start; flex-direction:column; }}
.panel-title-action .panel-head { flex:1; }.panel-title-action__copy { flex:1; min-width:0; }.section-description { margin:5px 0 0; }.panel-title-action:has(.section-description) { margin-bottom:12px; }.panel-head:has(+ .section-description) { margin-bottom:0; }.panel-head + .section-description { margin:5px 0 12px; }.panel-title-action .approve { display:flex; align-items:center; gap:5px; white-space:nowrap; }
.timestamped-log-output { max-width:100%; overflow:auto; padding:8px 0; border:1px solid var(--line); border-radius:8px; background:var(--bg); color:var(--text); font:11px/1.55 'DM Mono',monospace; }.timestamped-log-output > div { display:grid; grid-template-columns:172px minmax(0,1fr); min-width:max-content; }.timestamped-log-output time { padding:0 10px; border-right:1px solid var(--line); color:var(--muted); text-align:right; user-select:none; white-space:nowrap; }.timestamped-log-output code { min-width:0; padding:0 12px; color:inherit; white-space:pre; }
+.open-telemetry-trace { box-sizing:border-box; width:100%; min-width:0; height:min(360px,calc(100vh - 460px)); min-height:180px; overflow:auto; padding-right:8px; scrollbar-gutter:stable both-edges; }.open-telemetry-trace .telemetry-tree,.open-telemetry-trace .telemetry-tree ul { min-width:0; max-width:100%; }.combined-log-output .open-telemetry-trace .telemetry-tree { max-height:none; overflow:visible; }.open-telemetry-trace .trace-node { box-sizing:border-box; min-width:0; }
.setting-prompt-preview { margin:12px 0 0; padding:10px 12px; border:1px solid var(--line); border-radius:7px; color:var(--muted); white-space:pre-wrap; max-height:120px; overflow:auto; }
.operational-prompt-warning { display:flex; align-items:flex-start; gap:8px; margin:0; padding:10px 12px; border:1px solid #725c31; border-radius:7px; color:#f2d394; background:#302818; font-size:11px; line-height:1.55; }.operational-prompt-warning svg { flex:none; margin-top:1px; }
.app-settings:has(.operational-prompt-warning) { grid-template-columns:1fr; gap:0; }.app-settings:has(.operational-prompt-warning) .panel-title-action { margin-bottom:4px; }
@@ -182,7 +183,7 @@ select option[value="docker"] { display:none; }
.quick-start-model-profile,.quick-start-profile-form { display:grid; width:100%; min-width:0; gap:10px; }.quick-start-profile-form .modal-setting-row { grid-template-columns:180px minmax(0,1fr); }.quick-start-profile-form input,.quick-start-profile-form select { box-sizing:border-box; width:100%; min-width:0; }
.build-runner-workflow { display:grid; gap:8px; }.build-runner-workflow > strong { font-size:12px; }.build-runner-workflow > p,.build-runner-workflow .hint { margin:0; color:var(--muted); font-size:12px; line-height:1.6; }.build-runner-workflow .workflow-graph { height:300px; }
.quick-start-card { cursor:default; }.quick-start-card__select { display:grid; grid-template-columns:auto minmax(0,1fr); align-items:start; gap:12px; width:100%; border:0; padding:0; color:inherit; text-align:left; background:transparent; cursor:pointer; }.quick-start-card__select > svg:last-child { display:none; }.template-translation-action { margin-left:auto; display:grid; justify-items:end; gap:4px; }.template-translation-action .hint { margin:0; max-width:220px; }
-.run-detail-tab-panel { display:grid; gap:14px; padding-top:14px; }.run-detail-tab-panel__description { margin:0; color:var(--muted); font-size:11px; line-height:1.5; }.run-detail-tab-panel__intro { display:flex; align-items:center; justify-content:space-between; gap:12px; }.run-detail-tab-panel__intro .iteration-navigator { flex:none; min-height:30px; padding:0; border:0; }.tooltip-box { display:grid; grid-template-columns:auto minmax(0,1fr); align-items:start; gap:8px; padding:10px 12px; border:1px solid color-mix(in srgb,var(--accent) 40%,var(--line)); border-radius:8px; color:var(--text); background:color-mix(in srgb,var(--accent) 14%,var(--surface-raised)); font-size:11px; line-height:1.55; }.tooltip-box > svg { margin-top:1px; color:var(--accent); }.tooltip-box > span { min-width:0; }.iteration-candidates { display:flex; justify-content:flex-end; flex-wrap:wrap; gap:6px; padding:8px 0; border-bottom:1px solid var(--line); }.iteration-candidates button { display:flex; align-items:center; gap:6px; padding:4px 7px; border:1px solid var(--line); border-radius:999px; color:var(--muted); background:transparent; font:10px 'DM Mono',monospace; cursor:pointer; }.iteration-candidates button.selected { border-color:color-mix(in srgb,var(--accent) 45%,var(--line)); color:var(--accent); background:color-mix(in srgb,var(--accent) 9%,var(--bg)); }.iteration-candidates small { font:inherit; }.iteration-candidates em { font-style:normal; } @media(max-width:520px){.run-detail-tab-panel__intro { align-items:flex-start; flex-direction:column; }}
+.run-detail-tab-panel { display:grid; min-width:0; gap:14px; padding-top:14px; }.run-detail-tab-panel__description { margin:0; color:var(--muted); font-size:11px; line-height:1.5; }.run-detail-tab-panel__intro { display:flex; align-items:center; justify-content:space-between; gap:12px; }.run-detail-tab-panel__intro .iteration-navigator { flex:none; min-height:30px; padding:0; border:0; }.iteration-candidates { display:flex; justify-content:flex-end; flex-wrap:wrap; gap:6px; padding:8px 0; border-bottom:1px solid var(--line); }.iteration-candidates button { display:flex; align-items:center; gap:6px; padding:4px 7px; border:1px solid var(--line); border-radius:999px; color:var(--muted); background:transparent; font:10px 'DM Mono',monospace; cursor:pointer; }.iteration-candidates button.selected { border-color:color-mix(in srgb,var(--accent) 45%,var(--line)); color:var(--accent); background:color-mix(in srgb,var(--accent) 9%,var(--bg)); }.iteration-candidates small { font:inherit; }.iteration-candidates em { font-style:normal; } .run-detail-tab-panel .combined-log-output { width:100%; max-width:100%; min-width:0; }.run-detail-tab-panel .combined-log-output > section { min-width:0; } .tooltip-box { display:grid; grid-template-columns:auto minmax(0,1fr); align-items:start; gap:8px; padding:10px 12px; border:1px solid color-mix(in srgb,var(--accent) 40%,var(--line)); border-radius:8px; color:var(--text); background:color-mix(in srgb,var(--accent) 14%,var(--surface-raised)); font-size:11px; line-height:1.55; }.tooltip-box > svg { margin-top:1px; color:var(--accent); }.tooltip-box > span { min-width:0; } @media(max-width:520px){.run-detail-tab-panel__intro { align-items:flex-start; flex-direction:column; }}
.browser-evidence { display:grid; gap:6px; margin:10px 0; padding:10px; border:1px solid var(--line); border-radius:8px; background:var(--surface-raised); font-size:12px; }.browser-evidence > small,.browser-evidence div small { overflow-wrap:anywhere; color:var(--muted); }.browser-evidence div { display:grid; gap:3px; padding-top:7px; border-top:1px solid var(--line); }.browser-evidence b { width:max-content; padding:2px 6px; border-radius:999px; font-size:10px; }.browser-evidence__pass { color:#bdecc8; background:#1e4832; }.browser-evidence__fail { color:#ffc0b7; background:#4b2925; }
.run-build__name { display:flex; align-items:center; gap:5px; min-width:0; }.run-build .run-build__orphan { display:inline-flex; flex:none; width:14px; height:14px; padding:0; color:var(--danger); }.run-build__orphan svg { display:block; flex:none; width:14px; height:14px; }.run-build code { overflow:hidden; color:#839088; text-overflow:ellipsis; white-space:nowrap; font:9px 'DM Mono',monospace; }.table .tr > span { min-width:0; overflow:visible; text-overflow:clip; white-space:normal; overflow-wrap:anywhere; word-break:break-word; line-height:1.35; font-size:clamp(9px,.76vw,11px); }.table .tr.th > span { font-size:clamp(8px,.7vw,10px); line-height:1.25; }
.workflow-graph { height:378px; min-height:243px; border:1px solid var(--line); border-radius:10px; overflow:hidden; background:var(--surface); }.workflow-graph-node { position:relative; width:250px; border:1px solid var(--line); border-radius:8px; background:var(--surface-raised); color:var(--text); box-shadow:0 8px 22px rgb(0 0 0 / .18); }.workflow-graph .react-flow__handle { pointer-events:none; opacity:0; }.workflow-graph-node header,.workflow-graph-node footer { display:grid; gap:4px; padding:10px; }.workflow-graph-node header { border-bottom:1px solid var(--line); }.workflow-graph-node small { color:var(--muted); font:9px 'DM Mono',monospace; text-transform:uppercase; }.workflow-graph-node strong { font-size:12px; }.workflow-graph-node p { margin:0; padding:10px; color:var(--muted); font-size:11px; }.workflow-graph-node footer { grid-template-columns:1fr 1fr; color:var(--muted); font-size:10px; }.workflow-graph-node--idle { border-color:color-mix(in srgb,var(--line) 72%,var(--bg)); background:color-mix(in srgb,var(--surface-raised) 52%,var(--bg)); color:var(--muted); box-shadow:none; }.workflow-graph-node--running { border-color:var(--accent); box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 38%,transparent),0 0 20px color-mix(in srgb,var(--accent) 42%,transparent); animation:workflow-node-pulse 1.8s ease-in-out infinite; }.workflow-graph-node--running::after { content:""; position:absolute; top:0; left:0; width:18px; height:3px; border-radius:999px; pointer-events:none; background:var(--accent); box-shadow:0 0 7px 2px color-mix(in srgb,var(--accent) 82%,transparent),0 0 16px 3px color-mix(in srgb,var(--accent) 42%,transparent); offset-path:inset(-2px round 9px); offset-anchor:center; offset-rotate:0deg; animation:workflow-border-orbit 2.4s linear infinite; }.workflow-graph-node--failed { border-color:#eaa89f; }.workflow-graph-node--succeeded { border-color:#79c99e; }.workflow-graph-edge--condition .react-flow__edge-path { stroke:#f1d292; stroke-dasharray:5 4; }.workflow-graph-edge--loop .react-flow__edge-path { stroke:#8fb8ff; stroke-dasharray:6 4; }.workflow-graph-edge--error .react-flow__edge-path { stroke:#eaa89f; } @keyframes workflow-node-pulse { 50% { box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 10%,transparent),0 0 30px color-mix(in srgb,var(--accent) 56%,transparent); } } @keyframes workflow-border-orbit { to { offset-distance:100%; } } @media(prefers-reduced-motion:reduce) { .workflow-graph-node--running,.workflow-graph-node--running::after { animation:none; } }
diff --git a/orbit/cli.py b/orbit/cli.py
index cdfefead..42af80b0 100644
--- a/orbit/cli.py
+++ b/orbit/cli.py
@@ -10,10 +10,19 @@
import urllib.error
import urllib.request
import webbrowser
+from importlib.metadata import PackageNotFoundError, version
from pathlib import Path
from typing import Any
+def package_version() -> str:
+ """Return the installed OpenOrbit distribution version."""
+ try:
+ return version("openorbit")
+ except PackageNotFoundError:
+ return "unknown"
+
+
def request(base_url: str, path: str, method: str = "GET", payload: dict[str, Any] | None = None) -> Any:
"""Call the same local API used by the web UI."""
data = json.dumps(payload).encode("utf-8") if payload is not None else None
@@ -58,6 +67,7 @@ def task_wait_options(command: argparse.ArgumentParser) -> None:
def parser() -> argparse.ArgumentParser:
root = argparse.ArgumentParser(prog="orbit", description=__doc__)
+ root.add_argument("--version", action="version", version=f"%(prog)s {package_version()}")
root.add_argument("--url", default=os.environ.get("ORBIT_URL", "http://127.0.0.1:8787"))
commands = root.add_subparsers(dest="command", required=True)
run = commands.add_parser("run", help="Start the local OpenOrbit web server.")
diff --git a/package.json b/package.json
index 59810fe4..4dadd956 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "openorbit",
- "version": "0.12.5",
+ "version": "0.12.6",
"description": "Open control plane for recurring AI automations",
"license": "MIT",
"type": "module",
diff --git a/pyproject.toml b/pyproject.toml
index 09b04813..8bbc5b36 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
[project]
name = "openorbit"
-version = "0.12.5"
+version = "0.12.6"
description = "Open control plane for recurring AI automations"
readme = "README.md"
license = "MIT"
diff --git a/tests/test_cli.py b/tests/test_cli.py
index a7d7def9..df3c71d1 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -2,7 +2,9 @@
import sys
from types import SimpleNamespace
-from orbit.cli import main, parser
+import pytest
+
+from orbit.cli import main, package_version, parser
def test_cli_exposes_control_room_commands():
@@ -11,6 +13,14 @@ def test_cli_exposes_control_room_commands():
assert args.workflow_id == "insighta-user-simulation"
+def test_cli_prints_the_installed_package_version(capsys):
+ with pytest.raises(SystemExit) as exit_info:
+ parser().parse_args(["--version"])
+
+ assert exit_info.value.code == 0
+ assert capsys.readouterr().out == f"orbit {package_version()}\n"
+
+
def test_cli_exposes_local_web_server_command():
args = parser().parse_args(["run", "--host", "0.0.0.0", "--port", "8787", "--reload"])
assert args.command == "run"
diff --git a/uv.lock b/uv.lock
index 653f6dd5..59d985cd 100644
--- a/uv.lock
+++ b/uv.lock
@@ -950,7 +950,7 @@ wheels = [
[[package]]
name = "openorbit"
-version = "0.12.5"
+version = "0.12.6"
source = { editable = "." }
dependencies = [
{ name = "fastapi" },