Skip to content

v0.52.0

Choose a tag to compare

@underminedsk underminedsk released this 03 Aug 14:27
· 102 commits to main since this release
Immutable release. Only release title and notes can be modified.
af76437

Bobi looks like Bobi, and public CI proves the product rather than trusting it.

This is also the first release published entirely from bobi-agent — the
reference container image now builds and pushes from this repo rather than the
archived private deploy repo, completing the public half of the 2026-07 reorg.

Added

  • Public CI proves both brains, against the real image (#909, #911). The
    container-image job runs the built image through one real Claude ask and one
    real Codex ask, against an ephemeral event server started from the real Worker
    sources. Off by default: nightly, on dispatch, or on the ci:live label —
    never on a fork PR.
  • A real wrangler deploy is exercised (#909, #911). wrangler dev proves
    the Worker's code but never a deployment — the KV binding, the v1
    new_sqlite_classes Durable Object migration, and account-side provisioning
    were covered nowhere. worker-deploy-smoke.yml deploys a dedicated
    bobi-events-ci-smoke Worker in a separate Cloudflare account and runs a
    health check plus a publish→subscribe round-trip against the deployed URL.
  • The live lanes must prove they RAN (#909, #911). Every test in both lanes
    carries a skipif, so a renamed secret would have skipped to green.
    scripts/assert_junit_ran.py now rejects any skip, any wrong count, and any
    missing named test; tests/test_ci_live_wiring.py fails if a live step is
    deleted.
  • The reference image is published from this repo (#898). Dockerfile,
    docker/, release-image.yml, container.yml and the container contract
    tests moved here, with a new docs/REFERENCE_IMAGE.md. A self-hoster runs
    Bobi from a public pull instead of a repo grant.

Changed

  • bobi setup and bobi app reskinned onto the Bobi design system (#883).
    Vendored as docs/design-system/, now the source of truth for anything visual
    on any Bobi surface. Violet means state — live, enforced, gated, focused —
    never decoration. Geist / Geist Mono / Inter vendored as woff2, so the offline
    constraint holds: no CDN, no network at runtime, no build step.
  • The supervisor arrives via the wheel, not a COPY (#898). The
    bobi-supervisor shim is gone; the entrypoint execs
    bobi agent "${AGENT_NAME}" supervise -- --foreground.
  • The public surface no longer points at an archived repo (#905, #907).
    Including the setup wizard's Cloud card, which now points at
    ghcr.io/moda-labs/bobi and docs/REFERENCE_IMAGE.md.
  • docs/RELEASE_RUNBOOK.md describes the two-repo train (#900).

Fixed

  • Subagent launch chains are bounded before a process is spawned (#849,
    #888).
    Launches recorded no ancestry, so a workflow step launching its own
    workflow was unbounded: one scheduled trigger became 50 runs in 44 minutes,
    stopped only by the spend governor. Launches now carry BOBI_LAUNCH_LINEAGE
    and are refused up front when self-recursive or deeper than max_launch_depth
    (default 8).
  • Two supervisor test files now test the shipped code, not a private copy
    (#904).
  • Three integration tests failed on ambient BOBI_HOME, not on the code
    (#908).

Full changelog: https://github.com/moda-labs/bobi-agent/blob/v0.52.0/CHANGELOG.md