Skip to content

Releases: TaewoooPark/Agent-Blackbox

v0.48.0 — first-class Codex support

Choose a tag to compare

@TaewoooPark TaewoooPark released this 15 Jul 10:52

Codex can now fly with its black box on. ✦

This release makes OpenAI Codex a first-class Agent-Blackbox host alongside Claude Code and OpenCode: the same live map, replay, efficiency score, subagent genealogy, handoff, and optimization loop—without asking you to change how you work.

What’s new

Zero-setup Codex recording

Agent-Blackbox now tails the rollout sessions Codex already writes under $CODEX_HOME/sessions (default: ~/.codex/sessions). It works with both the Codex CLI and desktop app, and recording itself does not install a plugin or modify Codex configuration.

agent-blackbox up --host codex

Want one dashboard for everything?

agent-blackbox up --host all

That starts the Claude Code, Codex, OpenCode, and Gajae-Code recorders together.

Rich, native Codex traces

Codex activity is normalized into the same canonical event model used by the existing hosts, including:

  • sessions, turns, prompts, completion, and errors
  • model changes plus input/output/cache token telemetry
  • shell commands, searches, file reads, edits, creates, and deletes
  • structured patches without double-counting fallback events
  • MCP and dynamic tool calls
  • context compaction, plan updates, and permission requests
  • subagent spawning, parent/child grouping, and dedicated agent lanes

The adapter understands both Codex’s structured runtime events and its response-item fallback format, so different Codex surfaces can produce one clean timeline.

Optional in-run optimizer

Recording remains zero-config. If you also want the in-run optimizer, enable it explicitly:

agent-blackbox up --host codex --optimize

Then review and trust the installed commands once with /hooks in Codex.

The optimizer:

  • blocks only a conservative, unchanged full-file reread already present in the current context
  • carries a compact working-set reminder across turns
  • resets read assumptions after compaction
  • preserves existing user hooks and removes only Agent-Blackbox entries on uninstall
  • fails open—an optimizer problem never breaks the Codex run

Standalone management is also available through install-codex-hooks and uninstall-codex-hooks.

Full feature parity

Codex runs now flow through the existing host-agnostic pipeline, so they receive the same:

  • live dashboard and durable local NDJSON trace
  • timeline replay and workflow graph
  • context-efficiency and effectiveness scoring
  • project baselines and custom rule packs
  • handoff export
  • reversible AGENTS.md efficiency memory

The published CLI bundle now includes the Codex optimizer hook and, as a packaging fix, the existing Claude Code hook as well. Documentation was updated in English, Korean, Chinese, and Japanese.

Safety and privacy

  • Recording is read-only and local-first.
  • Raw file contents are not stored as trace payloads; sizes and redacted metadata are used instead.
  • Home/project paths and recognized secrets are redacted before persistence.
  • Optimizer hooks are optional, visible through Codex’s hook review, and deliberately conservative.

Verified before release

  • clean npm ci with 0 known vulnerabilities
  • 281 tests across 46 test files
  • complete workspace, dashboard, and self-contained CLI bundle build
  • Ubuntu and Windows GitHub Actions CI passed on the release commit
  • live end-to-end capture with Codex CLI 0.144.4
  • a real successful rollout reconstructed as two searches, two reads, and exactly one edit
  • a real 928-event Codex subagent rollout grouped entirely under its parent run
  • live hook probe confirmed the first full-file read succeeds and the unchanged duplicate is blocked
  • isolated --host all startup confirmed all supported recorders can run together

Upgrade notes

No data migration is required. Existing Claude Code, OpenCode, and Gajae-Code workflows keep their current behavior. To start recording Codex, select --host codex or include it through --host all.

Full comparison: v0.47.16...v0.48.0

v0.47.16 — stale session-map edges cleared on run switch

Choose a tag to compare

@TaewoooPark TaewoooPark released this 29 Jun 08:21

Switching to a different session no longer leaves the previous run's connection lines lingering over the new tree (most visible on Chrome/Windows).

  • The earlier fix reset only the workspace file-arc layer; the session map's own node-to-node lines and in-map file arcs were never cleared on a run switch. They're now cleared before paint the instant the run changes.
  • The edge SVG layers remount per session so a stale GPU-composited layer (Chrome/Windows can skip repainting a transformed SVG when only path data changes) can't carry old lines into the new run.

Host-agnostic — applies to Claude Code, OpenCode, Gajae-Code, and the rest.

v0.47.15 — Gajae-Code (gjc) recorder support

Choose a tag to compare

@TaewoooPark TaewoooPark released this 25 Jun 09:20

Adds first-party support for Gajae-Code (gjc) — community contribution by @Yeachan-Heo (#4), reviewed and hardened before merge.

  • New gjc adapter — tails Gajae-Code session JSONL (~/.gjc/agent/sessions/), no install. Record with --host gjc, or alongside the others with --host all. Same recorder, map, and efficiency score. (Experimental; minor next to Claude Code / OpenCode.)
  • Review hardening: subagent transcripts are detected by the absence of a trailing session UUID (an underscored agent name no longer misfiles as a main run); subagent lanes fall back to the subagent type when no id is present; the redaction secret-assignment rule now also catches quoted JSON values ("password": "…").
  • Cross-platform: separator-portable tests; verified green on ubuntu + windows-latest CI.
  • README documents gjc as an optional experimental host in all four languages (en/ko/zh/ja).

Run it: npx @taewooopark/agent-blackbox@0.47.15 up --host gjc

v0.47.14 — cross-platform theme-toggle icons

Choose a tag to compare

@TaewoooPark TaewoooPark released this 24 Jun 13:12

The dark/light theme toggle used the / glyphs (U+2600/U+263E), which aren't in the app's serif font stack on Windows — they fell back to tofu (showed as a stray C). Surfaced by a real Windows render via the new on-demand windows-visual CI job.

Swapped both for inline currentColor SVG sun/moon icons, so the control renders identically on every platform.

Run it: npx @taewooopark/agent-blackbox@0.47.14 up

v0.47.13 — Windows hardening

Choose a tag to compare

@TaewoooPark TaewoooPark released this 24 Jun 12:10

Records Claude Code on native Windows cleanly. The recorder tails the JSONL transcripts (no hook install), so it sidesteps Claude Code's Windows hook bugs — but the transcripts store paths with backslashes ("cwd":"C:\\Users\\..."), which needed handling end to end.

Fixes

  • Separator-safe file paths — the session map's FILES panel split paths on / only, so a Windows path ($PROJECT\src\foo.ts, C:\proj\src\foo.ts) collapsed into one mangled segment. Now separator-agnostic; the file tree, connection arcs, and rows render correctly on Windows.
  • Separator-insensitive redaction — a home/project dir is now stripped whether a path uses \ or / (Claude Code mixes both on Windows). Closes a latent leak where a mixed-separator absolute home path could survive in the trace, and makes the $PROJECT/~ rewrite reliable.
  • CRLF-safe transcript tailing — Windows \r\n line endings handled explicitly.

Verification

  • A windows-latest CI job now runs npm ci + check + build on every push, plus a daemon smoke test that POSTs a C:\… event and asserts the snapshot — real Windows file I/O. Both OS legs green.
  • 253 tests, including Windows path-segmentation + mixed-separator redaction cases.

(Live browser gestures + a real recorded session are still best confirmed on a Windows desktop.)

Run it: npx @taewooopark/agent-blackbox@0.47.13 up

v0.47.12 — trackpad map controls

Choose a tag to compare

@TaewoooPark TaewoooPark released this 24 Jun 11:10

Trackpad support for the session map

Without a mouse the map was hard to drive — a trackpad has no middle button to pan with, and two-finger scroll only zoomed. The map now routes by gesture so each device feels native:

Input Pan Zoom
Trackpad two-finger swipe pinch
Mouse middle-button drag wheel (cursor-anchored)

Detection: a trackpad emits horizontal and/or fractional sub-pixel wheel deltas a notched mouse never does. That verdict latches, so the integer momentum tail of a fling keeps panning instead of flipping to zoom; a mouse never latches, so its wheel keeps zooming.

Note: trackpad-vs-mouse detection has no standard browser API and is OS/driver-dependent. These gestures are verified on macOS; Windows precision-touchpad behavior is being tested separately. Universal fallbacks (Ctrl/⌘+wheel and the /%/+ buttons to zoom) work on every platform.

README (EN + KO) documents the controls.

Run it: npx @taewooopark/agent-blackbox@0.47.12 up

v0.47.11 — map mouse controls + node-text ellipsis

Choose a tag to compare

@TaewoooPark TaewoooPark released this 24 Jun 08:22

Map mouse controls — standard pan-and-zoom canvas

The session map's mouse controls weren't optimal for a 2D canvas (a plain wheel panned; only ctrl/⌘+wheel zoomed). Now:

  • Wheel = zoom, anchored under the cursor — the tree point beneath the pointer stays fixed (~1px drift). Corrects for the column's flex-centering shift so X anchors as cleanly as Y, and normalizes line/page wheel deltas so a notched mouse and a trackpad pinch both zoom sanely.
  • Middle-button (wheel press) drag = pan in every direction, 1:1 with the pointer.
  • Left-drag still rubber-band selects; the / % / + buttons, Tracing, and Auto layout are unchanged.

Node text ellipsis

Long agent role names in step nodes now truncate with a "…" instead of clipping abruptly — they were a raw text child of a display:flex pill where text-overflow: ellipsis never applied. (Titles and agent-start labels already ellipsised.)

CI

Restored the @emnapi cross-platform optional deps that a macOS npm install had pruned from the lockfile, which broke npm ci on the linux runner.

README (English + Korean) now documents the map controls.

Run it: npx @taewooopark/agent-blackbox@0.47.11 up

v0.47.10 — session map stays in its lane

Choose a tag to compare

@TaewoooPark TaewoooPark released this 24 Jun 07:47

Fix: session-map file lines never bleed into the right panel, and stop lingering

The moment→file connection lines live in an un-transformed, workspace-wide SVG overlay that paints above the co-pilot. On a dense run the tree is fit-zoomed wide, so moment nodes scroll off the right of the clipped map — getBoundingClientRect still reports their off-screen x, so a line could originate over the co-pilot and paint across the right panel.

No-bleed guarantee (geometric — holds at any width, zoom, or animation frame):

  • The SVG clip band and every line's endpoint are clamped to the map column's right edge, so a line only ever hands off toward the files across the gap, never into the panel.
  • A line whose origin node has scrolled past the map edge is dropped, not stubbed.
  • The measure bails entirely if the map canvas can't be located (no full-width fallback).

No more lingering lines:

  • The follow camera moves nodes via a CSS transform that fires no scroll/resize event — each follow pan now nudges a re-measure so the lines track the eased camera instead of freezing where the nodes used to be.
  • All measured lines clear on a run switch (their origin nodes are gone).

Verified on a 320-moment / 277-line run at 417% zoom: 0 lines cross into the co-pilot, the clip stops at the map edge (1097 vs co-pilot 1109), and every line stays glued to its node (gap 0) after a hard pan + re-engaged tracing. npm run check: 245/245 tests pass.

Run it: npx @taewooopark/agent-blackbox@0.47.10 up

v0.47.9

Choose a tag to compare

@TaewoooPark TaewoooPark released this 24 Jun 05:59

Make the session map legible for heavy parallel / workflow runs (driven by viewing a real 96-lane workflow).

  • Lanes read as roles, not paragraphs. A workflow fans out dozens of subagents; the transcript-only ones had only their first prompt to label with. Each lane is now named by its role — the spawn type (general-purpose, workflow:urp-report-korean), or distilled from the task prompt ("You are a literature-search specialist…"literature-search specialist; "너는 내용 충실성 감사관이다…"내용 충실성 감사관). Applied at render (so runs recorded before this read as roles too) and in the adapter (new recordings store the role). graph.ts is now the sole authority on a lane's display name and prefers the concise spawn role over a long prompt label.
  • Dense runs open at a readable zoom instead of fit-to-tiny; the % button still resets to 100% = fit the whole tree, so the full picture is one click away.
  • A finished run's lanes read DONE, not stuck on ACTIVE (subagent transcripts rarely emit a clean end, so the node status used to stick).

245 tests pass; verified live on a 1429-event / 96-lane workflow run.

`npx -y @taewooopark/agent-blackbox@0.47.9 up --host claude-code`

v0.47.8

Choose a tag to compare

@TaewoooPark TaewoooPark released this 24 Jun 04:28

Hardening found by actually opening the rendered dashboard and reviewing it as a hostile quality/UX/robustness reviewer would — the data-layer tests were green but the UI surfaced real issues.

  • Custom checks were silently empty in global multi-project mode. The daemon loaded rules.json from the dominant cwd of the whole event window, so a run in project A got project B's rules — or none. Same "daemon's-latest ≠ the viewed run" mismatch already fixed for optimize and baselines. The daemon now ships a {project → RulePack} map and the dashboard evaluates the pack for the run it's showing. (Verified live: a node_modules read and a test-less commit render for the right project.)
  • Accessibility: rule severity was border-colour only — added a text WARN/BAD/INFO tag (works in forced-colors / for colour-blind users) and aria-labels on the rule rows and the archetype/outcome/baseline chips (were title-only).
  • Two-score clarity: the effectiveness chip is captioned OUTCOME (e.g. "OUTCOME · likely ok · 80") so it isn't read as a second efficiency number.

In-browser audit: all 11 metrics + the new chips render, low-signal runs hide tentative chips, the optimize modal targets the viewed run's project, 0 console errors on a clean load. 239 tests pass.

`npx -y @taewooopark/agent-blackbox@0.47.8 up --host claude-code`