-
Notifications
You must be signed in to change notification settings - Fork 1
FAQ
Real questions that came up while building this, not a generic list.
Its renderer, OpenTUI, needs Bun's native FFI — as of writing it doesn't run under Node at all (OpenTUI native FFI is not available for this runtime yet). Shipping it would mean moving the whole CLI to Bun: a ~55 KB npm install becomes something over 100 MB, every one of the ~280 tests currently on node --test would need moving to bun test, and npm i -g omniharness-cli stops working for anyone on plain Node.
OpenCode is MIT-licensed, though, so its ideas are fair game without any of that. The session sidebar and the home-screen layout are both built from reading its source and reimplementing the behavior in this project's own Ink-based UI — different renderer, same shape.
By design — the whole point is that main is always the released version, so there's no separate "cut a release" step to forget. The gate is what makes that safe: gofmt, go vet, the full Go suite with the race detector, TypeScript typecheck (including the tests, not just src), and the npm suite all have to pass, on Linux, macOS, and Windows, before anything merges.
Doc-only, .github/-only, and _test.go-only changes are excluded from cutting a release — a version that installs byte-identical code buys nobody anything. That exclusion list was itself added after a docs PR cut a no-op release.
Because the TypeScript client only tracks context tokens and request count on its own; output tokens and spend come from the gateway's response headers. Showing 0 out before any of that has been reported would read as "the model returned nothing," and $0 would read as "this run was free." Both are absent instead of zero until there's a real number to show. See Security Model — "no fabricated telemetry" is a project-wide rule, not a UI nicety.
Every subprocess this harness spawns is stripped of the harness's own credentials (OMNIROUTE_API_KEY and friends) — that can't be turned off. Everything else, including GITHUB_TOKEN and AWS_SECRET_ACCESS_KEY, is inherited by default, because an agent asked to open a PR or publish a package needs those tools' tokens. If your deployment doesn't want that, name the variables to strip:
[policy]
secret_env = ["GITHUB_TOKEN", "AWS_*", "*_TOKEN"]Two separate bugs, both fixed. One: Windows Terminal doesn't deliver a maximize/restore as a single resize event — it animates through a burst of intermediate sizes, and each one triggered a full redraw, which is what produced duplicated frames. Two: a slow-to-answer terminal capability query had its listener torn down on a fixed timeout, so a late reply fell through to the text editor and got typed in as literal characters. Neither is theoretical — both were found from a real screenshot, reproduced in a test, and confirmed fixed by reverting each fix and watching the test fail again.
Why is the recommended way to get plugins "clone a marketplace into .claude/plugins" rather than something built-in?
That's genuinely just where the project is today — there's no omniharness plugin install yet. See Plugin Format for what already works.