Week of 2026-05-11 · Releases v0.0.13 → v0.0.20 · 15 merged PRs · 8 releases
Shipped this week
Human-in-the-loop handoff, end to end
This week's headline: the full agent → human → agent cycle is now wired. Three PRs closed the loop together.
#38 — Human handoff logging and notification (v0.0.13, @adPalafox)
Bizbox now emits a dedicated event when an issue parks waiting for a human (confirmation request, question, or human-owned blocker). Events deduplicate across runs to avoid notification spam and feed the inbox badge count. Everything else this week builds on this foundation.
#42 — ClickUp awaiting-human approval polling (v0.0.16, @adPalafox)
Once an issue is parked, Bizbox polls the ClickUp chat message posted for that handoff. A direct reply or positive reaction is detected and bridged back as an approval signal. Configurable reaction set, deduplication, and test coverage included.
#51 — Confirmation notifications in the inbox (v0.0.20, @angelofallars)
"Confirmation requested" and "Questions requested" items now appear in the board inbox, and the sidebar badge counts them. Operators no longer need to hunt for parked issues; they show up alongside other actionable work.
The result: agent parks → ClickUp message sent → human replies → Bizbox detects it → agent resumes.
ClickUp super agents
#36 — ClickUp super agents (v0.0.20, @ralphbibera)
The clickup_agent_ref adapter wires Bizbox to ClickUp-native automations as a first-class agent surface. It runs as an API-first bridge (not a local process executor), shapes ClickUp task payloads with full issue context, and supports an automation_trigger mode so ClickUp Automations can hand off to the ClickUp AI agent without browser automation.
Audience control for deliverables and documents
#50 — Audience support for deliverables and issue documents (v0.0.19, @adPalafox)
Deliverables and issue documents now carry an explicit audience field: human (public-facing) or internal (team-only). Schema, types, API validation, and board UI all updated. Agents can now produce internal work products (triage queues, dry-run previews) alongside public drafts without mixing them on the same surface.
Deliverables from heartbeat runs
#49 — Deliverables created on heartbeat (v0.0.18, @DennisDenuto)
Heartbeat run summaries can now promote durable text sections into issue documents automatically. Both explicitly tagged blocks and legacy deliverable sections work. Agents no longer need a separate write step to surface structured work products.
Timeout configuration for the OpenClaw adapter
#54 — Timeout configurations and delayed responses (v0.0.20, @adPalafox)
The OpenClaw Gateway adapter gained agentAcceptTimeoutMs, separating agent-acceptance timing from connection-level timeouts. Default behaviors were clarified and edge-case test coverage added. Operators running long-running agent tasks now have finer control over when Bizbox considers a connection stalled.
Citro brand refresh
#35 — Citro branding (v0.0.14, @ralphbibera)
The board UI got a new coat of paint: warmer dark palette, metallic orange accents, rounder surfaces. A new TopNavItem component handles the top bar, and a brand-shell CSS class anchors the palette across Layout, Sidebar, and BreadcrumbBar. The breadcrumb and top-nav components were refactored as part of the same pass.
Fixes and polish
- #52 — ClickUp comment ID normalisation (v0.0.20, @ralphbibera) ClickUp comment IDs can arrive as numbers; the bridge now coerces them to strings before comparison. A dead bridge status was also removed.
- #53 — Deliverables search focus (v0.0.20, @ralphbibera) Filtering the Deliverables page no longer steals keyboard focus from the search input.
-
#47 — Builder mounted under company routes (v0.0.18, @ralphbibera) The AI Company Builder API is now scoped under
/api/companies/:id/..., consistent with every other company-scoped resource. -
#48 — AI Company Builder streaming fix (v0.0.18, @DennisDenuto) Fixed garbled streaming output by replacing the
nonEmpty()helper withnonEmptyPreservingWhitespace(), which filters fully-empty values while preserving spaces. - #46 — Agent-thread wake context refresh (v0.0.17, @ralphbibera) Direct board-to-agent messages now carry a refreshed wake context instead of the stale first-message snapshot. Runtime settings in the thread view were collapsed to reduce noise.
- #44 — Builder UI and gateway flow (v0.0.15, @ralphbibera) Builder session management and OpenClaw-backed runtime/configuration flows updated.
Decisions
awaiting_human is not blocked. The team split these into distinct states. Dependency blockers can resolve without human input; human-decision blockers require an explicit handoff and a clear ask. Conflating them made notification routing impossible and obscured how long humans were actually in the critical path. awaiting_human is now a protected control-plane pause. (The full architectural analysis is in the May Deep Dive draft; post coming next week.)
ClickUp is a signal surface, not a source of truth. The polling bridge (#42) was designed with a deliberate constraint: a ClickUp reply or reaction is only a signal until Bizbox accepts the matching request_confirmation interaction. The Bizbox issue graph stays authoritative, preventing race conditions where a ClickUp reaction fires before the interaction is registered.
audience is explicit, not inferred. Rather than deriving visibility from document type or location, the team added a first-class audience field. Public drafts default to human; agents producing internal work products must explicitly set internal. Leakage becomes harder to do accidentally.
Trade-offs
Polling instead of webhooks for ClickUp approval. The bridge polls for replies and reactions rather than receiving webhooks. This adds latency bounded by the poll interval and burns API quota. The trade-off was deliberate: ClickUp's webhook surface for chat reactions is less reliable than its REST API, and a working bridge now beats a fragile one later. A webhook upgrade is the natural next step once polling is proven in production.
Heartbeat-promoted deliverables are best-effort. The extraction in #49 uses pattern matching on run output. Agents that don't follow the tagging convention will have deliverables silently skipped rather than errored. That was a deliberate choice to avoid breaking existing heartbeat runs. The feature's value depends on consistent tagging adoption.
Open challenges
ClickUp approval latency in production. The polling bridge is new and untested at scale. Safe poll intervals and false-positive rates for the "positive reaction" heuristic are unknown. Monitoring the first week of production use is the immediate next step.
Deliverable tagging adoption. There's no enforcement yet. An agent producing a deliverable in a non-standard format will silently miss promotion. A linting pass or schema validation on run output would close this gap.
Builder API route migration. Moving the builder under company routes (#47) is the right long-term shape, but clients that hardcoded the old instance-root path will break silently. Known consumers should be audited before the next release.
Top comments (0)