Skip to main content
Version: v0.0.82

v0.0.57 — Single-file install + chat-primary follow-ons

Released: 2026-05-06.

Single-file tarball install

v0.0.55 + v0.0.56 deploys all needed --no-require-signature because the CircleCI artifacts UI hands out one file at a time and operators only grabbed the .tar.gz. v0.0.57 adds a peek-into-tarball verification path: when the outer sidecar is missing, the installer extracts just paas/backend/dist/run.bin{,.sha256,.sha256.sig} into a scratch dir and verifies run.bin's bundled signature. run.bin is the only executable surface, so a verified run.bin signature is a strong attestation — accept the install.

# v0.0.57+ — both work signed-by-default
honeyframe update # downloaded just the .tar.gz? peek-in-tarball verifies
honeyframe update --tarball … # downloaded sidecars too? both paths verify

Other outer-sig failure modes (verify-failed, sha-mismatch, bad-pubkey) still hard-fail.

Dashboard chat-primary follow-ons

Three additive fixes on the v0.0.56 panel.

Cross-request mutation idempotency

New honeyframe.dashboard_mutation_log table. apply_mutations dedups envelopes against it before applying — a chat client retrying an envelope after a network error no longer double-applies. The response shape grew a deduped field listing IDs that short-circuited; the UI renders "already applied" rather than "applied". Snapshots skip when the batch is fully deduped — no empty revisions from retries. Best-effort: pre-migration tenants (no log table) fall back to per-batch dedup silently.

Resizable chat panel

Drag the right edge of the chat panel in flex (chat-primary) mode to resize. Width persists per user via localStorage, clamped 280–600 px. Overlay mode (legacy) keeps fixed width — resizing a floating overlay doesn't reflow the canvas.

Hide Chat mode toggle when the feature flag is off

When HONEYFRAME_DASHBOARD_MUTATIONS=0, clicking Chat mode previously still flipped localStorage and hid the toolbar — but the chat panel refused to render (the hook auto-hides on /chat-thread 404), leaving a blank left column with no edit affordance. A new useDashboardChatEnabled hook does a single GET /chat-thread probe per dashboard ID; the toggle button and the computed useChatPrimary flag gate on it. Belt-and-braces — a stale localStorage 1 after a flag flip falls back to the legacy UI.

Schema robustness

honeyframe.scenarios UNIQUE / PRIMARY KEY adds on init now NOTICE-skip on both duplicate_object and wrong_object_type exceptions. v0.0.56 prod deploys logged "1 failed" on every step against tenants where scenarios is a VIEW (Phase 2 fold); after this release, migrate.py against the shared DWH should report Done: N applied, 0 failed.