v0.1.73 — Omnibus catch-up (v0.1.9 → v0.1.73)
Released: 2026-07-06. Omnibus snapshot covering 65 tagged releases (v0.1.9 → v0.1.73, ~1,025 commits, 2026-06-14 → 2026-07-06).
This is a single catch-up release note for the v0.1.9...v0.1.73 span — the docs were last snapshotted at v0.1.8. Per-version raw changelogs live in docs/_release-notes-staging/<version>/raw-notes.md (gitignored; compare ranges, head commits, and full commit bodies) for anyone who wants the commit-level detail behind each summary below. v0.1.32 was an empty tag, so the public summary below groups shipped platform behavior by theme rather than by tag.
The headline themes: a streaming AI assistant runtime with personas, governed tools, artifacts, memory, and Structured Visual Agent flows; a deeper guardrails and cost-governance layer; major Dashboards, Webapps, Flow, Catalog, Data Quality, and Automation parity work; a real Administration and Asset Registry surface; Knowledge Banks, Prompt Studio, and LLM Mesh; and a large SDK/API pass. Customer-internal cockpit migrations, one-off ingestion work, and tenant finance engineering are intentionally omitted unless they shipped a reusable platform capability.
Agents, Guardrails & LLM Mesh
Streaming assistant runtime. Honeyframe now has a first-class SSE chat path: POST /api/chat/stream emits a stable event schema (token, thinking, tool_start, citation, usage, error, done) backed by services/agent_runtime.stream_agent_loop(), services/ai_tool_registry.py, and the provider boundary connectors/anthropic_llm.stream_turn(). ChatStreamRequest carries webapp_key, page_key, agent_id, persona, and images; build_message_kwargs() shapes requests per model so thinking/temperature combinations do not 400; and the governed run_sql tool now resolves scope through the same allowlist path used by blocking chat. Streaming sessions are persisted in chat_sessions / chat_history, emit a session event, and can also run incognito to skip persistence entirely.
Personas, capability scopes, citations, and artifacts. Capability personas landed behind GET /api/ai/personas and GET /api/ai/capabilities?persona=, with resolve_capabilities() intersecting persona defaults, user grants, and project ai_policy. New permission scopes include ai.web_search, ai.code_exec, ai.files, ai.mcp, ai.memory, and ai.vision; later governance work also introduced high-trust policy concepts such as ai.rls_unscoped and ai.pii_unmasked. Chat gained provider-agnostic image input via ChatRequest.images, document citations via build_rag_document_blocks(), streaming-safe markdown segmentation, inline GFM tables, code blocks, Mermaid diagrams, lightweight LaTeX normalization, stop-generation, tool-activity chips, and artifacts for tables, charts, CSV, code, SQL, documents, and diagrams.
Agent governance and guardrails. Agent Builder gained a Data Access tab backed by GET /api/agents/{id}/data-access, restrictSchemas, restrictTables, narrow_schemas(), and narrow_data_access(), all fail-closed and intersect-only. Data policies expanded from schema checks to per-table allowlists, table-qualified column masks, config.columnMasks, honeyframe.column_metadata, mask types hash / redact / partial / null, and config.rowScope for a generic per-tenant row-scope dimension. The Safe Guard UI now persists config.guardrails for PII handling, prompt-injection checks, allowed topics, forbidden terms, and custom regex rules; output guardrails run on both /api/chat and /api/chat/stream, with an SSE guardrail event and persisted agent_guardrail_events. New policy checks include numeric_grounding, numeric_grounding_strict, response_format (json | markdown_table | no_code), period_completeness, dateAnchor, grain-aware completeness checks, derived-rounding grounding, and table-completeness checks.
Cost, alerting, memory, and visual agents. Cost Guard records token usage in honeyframe.llm_usage_ledger, exposes GET /api/org/usage/cost, supports organizations.llm_monthly_budget_usd, and can warn or hard-429 via HONEYFRAME_LLM_BUDGET_ENFORCE. Per-agent cost panels (GET /api/agents/{id}/cost), maxCallsPerTool, org-wide AI Health (GET /api/org/usage/agents), guardrail alert routing, quiet hours, snooze, anomaly detection, threshold overrides, history, and daily digests all shipped. Memory now has Tier 1 history windows (HONEYFRAME_CHAT_HISTORY_TOKENS, chat_sessions.summary, Anthropic prompt caching) plus opt-in semantic fact/episode recall stored in memory_facts, memory_episodes, and memory_writes. The Structured Visual Agent platform adds an 18-block graph runtime, sandboxed CEL expressions, chat_sessions.agent_state, drag-to-wire graph editing, tool nodes, delegate nodes, Jinja emit-output templates, recursive AND/OR routing conditions, smart subsequent-turn entry selection, and a Python Code Agent runtime isolated in a subprocess with a 60s wall-clock timeout.
Agent Tools and LLM Mesh. Agent Tools moved from mock parity to runtime support: llm_query, sql_query, image_generation, reporter, mcp, and vector-search-from-knowledge-bank tools are now governable items, with agent_tools.tool_type migrations and Asset Registry item_type support for asset versus agent_tool. Reporter tools enforce SSRF checks, HTML escaping, and configuration.allowed_recipients; MCP uses a RemoteMCP connection type with SSRF-guarded JSON-RPC. LLM Mesh centralizes connection policy through honeyframe.llm_connection_policies, /llm-mesh, GET /overview, GET/PUT /policies/{id}, and GET /usage; enforcement covers budget blocks, allowlists, per-connection concurrency, banned terms, and rate limits. Provider coverage now includes Gemini, Amazon Bedrock, and OpenAI-Compatible endpoints in addition to existing connectors.
Dashboards
Dashboard generation and card types. The AI Dashboard Generator gained streaming progress (POST /api/dashboards/generate/stream), regenerate-in-place, per-card self-correction, project model pinning, and stronger SQL pre-flight checks, including a fix for SELECT-list aliases in ORDER BY / GROUP BY / HAVING. Dashboard folders and collections surfaced in the UI, webapp_block embeds a published webapp block inside a dashboard card, and the card catalog added table width buckets [6,12,24], peer_ribbon, metric_hero, process_map Sankey rendering (display_options.layout_style='sankey'), scenario, data_quality, image, and sandboxed iframe card types. metric_hero is in VALID_CARD_TYPES but remains excluded from VALID_AI_CARD_TYPES.
Authoring, drilldown, sharing, and export. Card interactions expanded with CardRefSpec.drill, KpiDrillSpec.layers[], click-to-drill KPI modals, multi-layer worst-first drilldowns, typed filter widgets (categorical, explicit, numeric_range, date_relative), cross-filter deepening, pinned public read-only filters, Copy URL, card-lock persistence, favorites, click-action editing, tile title modes, page chrome config, nav drawer, live refresh, duplicate/copy-page, and card move/copy pointer mode. The share/export sheet now supports RFC-4180 CSV, Excel-openable XLS, PNG snapshots, lazy PDF, native share, server-side PDF export through services/dashboard_pdf_export.py, multi-page PDF, kiosk intervals, and fit-to-page export. v0.1.73 also adds group-based shares, request-access flow, template multi-pin, and server-side card-library pins.
Versioning and promotion. Dashboard version pinning now embeds a card_snapshots map in asset_versions, card execute accepts ?asset_id, and dashboard_card_execute spans make pinned execution observable. dashboard is promotable through the same governance path as other assets, and later SDK work exposes typed handles for dashboard public links, PDFs, templates, collections, shares, revisions, and filters.
Webapps & App Builder
Theme, sandbox, and runtime APIs. Webapps gained a persisted dark/light toggle through useShellTheme(), guarded localStorage / matchMedia access, self-hosted Inter fonts, tenant-customizable AppTheme.fontFamily, fontScale, fontUrl, layout-density tokens (sidebarWidth, borderRadius, contentPadding, assistantWidth, assistantPosition), and natural-language theme edits through GET /api/webapps/theme-options, PUT /api/webapps/{key}/theme, and POST /api/webapps/{key}/ai-theme. HTML blocks gained data_sql, _resolve_block_query_sql, a sandboxed iframe data channel, injected CSP, pinned DOMPurify, public_hidden, 8s SQL timeout, 5k-row cap, and config write-boundary caps. The in-iframe window.hf runtime now includes hf.onData, hf.setFilter, hf.setFilters, hf.rows, hf.columns, hf.params, hf.navigate(pageKey), hf.onError(cb), hf.submitScore, hf.leaderboard, hf.saveState, and hf.loadState.
No-code blocks and vibe-code workflows. The builder added a Gallery tab, live Edit/Preview mode, desktop/mobile preview toggle, WYSIWYG unsaved previews, no-code leaderboard and form blocks, inline data-capture forms (POST /api/(public/)webapps/{key}/forms/{form_id}/submit), form_submissions.form_key, leaderboard_card(), form() / field() SDK builders, nav icon/section/badge controls, assistant agent wiring, alert-pill SQL, notifications SQL, and POST /webapps/{key}/chrome-signals. Whole-webapp AI edit ships through POST /api/webapps/{key}/ai-edit as preview-only output with caps, multi-turn history, data-aware prompt context, and SDK methods Webapp.ai_edit(), versions(), rollback(), and diff_versions(). Fullscreen/chromeless mode uses chrome.fullscreen, ?fullscreen=1, and ?embed; vetted CDN loading is opt-in through allow_cdn.
Library, code webapps, and runtime polish. Published applications and dashboard pages now appear in a searchable Library surface (/apps/{key} and /app/{key}), split into real tools and RBAC-gated demo/fun entries without an is_public bypass. AppShell sharing uses navigator.share with clipboard fallback. Code Webapps gained Standard, Shiny, Dash, and Bokeh starters, a Monaco split editor, sandboxed live preview, and Settings for backend, scalability, and security. Starter code now uses the real window.hf runtime, and in-product docs links point at docs.honeyframe.io.
Flow & Recipes
Prepare processors and visual recipes. Prepare moved onto the real PrepareRecipePage and grew from 30 to 54 step kinds. The added processors include date_trunc, epoch date-diff, switch_case, ntile, mean imputation, row_calc, currency_split, url_split, hash_columns, grok, ua_classify, holiday_flag, split_fold, fold_columns, unfold, column_pseudonymization, filter_on_numerical_range, flag_on_bad_type, flag_on_date_range, and flag_on_numerical_range; transpose is intentionally refused with a fold/unfold pointer. Recipe coverage added upsert with native Materialization.MERGE, SSRF-guarded download, geo_join using Haversine without PostGIS, top_n bottom-N and rank output, and distinct duplicate-count output.
Flow canvas and build operations. Flow gained Dataiku-parity color tokens, 19 lens views, PDF export, PNG export, a faceted filter popover, zone drill-in via ?zoneId, multi-select bulk actions, consistency checks (POST /api/flow/check-consistency), copy subflow (POST /api/flow/copy-subflow), manual lineage-relationship editing, provenance lenses, partitioning specs ({dimensions:[{name,type,period?}]}), GET /api/datasets/{name}/partitions, POST .../build-partition, and dbt trigger support for --vars. The v0.1.72 canvas restyle added shared recipe icons/colors, horizontal recipe cards, freshness-bar dataset cards, zone headers, an 18-item context menu, branch select/fold, Build modal scopes (only, upstream, downstream, full_lineage) through POST /flow/build-multi, an omnibox that includes AI objects, Markdown flow-doc export, and ghost-share actions.
Automation-aware recipe steps. Scenario and Flow integrations added plugin recipes to the "Run Recipe" picker, sql_query triggers with read-only 8s checks, cycle-guarded and depth-capped run_scenario, export_notebook, SharePoint-to-managed-folder sync, and sync_sharepoint as a scheduled step. Scenario platform changes are summarized under Ops below.
Catalog, Discovery & Collections
Catalog rebuild and asset detail. /catalog was rebuilt into Browse, Collections, and Migrate tabs with a seven-tab asset page: Overview, Columns, Lineage, Profile, Quality, Sample, and Usage. Governance endpoints now include GET /governance and PATCH /assets/{name}/governance, backed by catalog_collections and catalog_collection_items. Numeric profiling now includes median, p25/p75, IQR, and sample standard deviation, with PII-aware profile masking. honeyframe.column_profiles caches profiles with a 24h TTL and re-masks on read, and datasets gained certification tiers (Gold, Silver, Bronze) plus popularity, certification, name, and recently-updated sorts.
Discovery and metadata management. Catalog browse now has a DSS 14.7.1-style table, Info/Schema/DQ right panel, faceted counts, unified dictionary column docs, managed-folder browse/preview, managed-folder usage reverse lookup, bulk table import through POST /datasets/import-tables, sampling (sample_method=first|random|last), schema-compatible change-connection (POST /datasets/{name}/change-connection), tag registry and rename/color APIs (GET /datasets/tags/registry, POST /tags/rename, PUT /tags/colors), first-class column search, meanings search, overlay-doc-aware ranking, popular-datasets strip, star/watch interests, and asset-page discussions.
Collections and reusable libraries. Collections gained stewards, metadata-completeness scoring, security roles, and DQ chips in the content table. The Enterprise Asset Library adds code, prompt, and card templates with instantiate flows, making reusable implementation snippets first-class catalog objects instead of loose docs.
Data Quality, EDA & Standards
Built-in Data Quality rules. Data Quality now ships a no-SQL rule library with not_null, unique, accepted_values, range, regex, freshness, and row_count_min, exposed through GET /rules/types and stored in dq_rules.rule_type / dq_rules.params. Each template produces the same {sql_check, sql_failing} contract as a custom rule, so monitoring and failure extraction stay uniform.
DQ parity, worksheets, and statistics. Later releases added Data Quality status timelines, soft/hard thresholds, drift rules, templates, provenance, extract-failed-rows, and a monitored overview. EDA worksheets landed with honeyframe.dataset_worksheets and /api/statistics for univariate statistics, correlation matrices, and scatter_fit; statistical cards now cover chi-square, Welch t, KS, CDF, fit-distribution, ACF, Mann-Kendall, and quantiles.
Project Standards. Project Standards adds an org check library, ordered scopes, severity 0-5, and compliance reporting, giving admins a reusable standards layer alongside catalog metadata and Data Quality rules.
Security, Governance & Administration
Permissions, PATs, and auth. The RLS helper honeyframe.row_in_session_orgs(integer) is now registered before dependent migrations, and a row_in_session_orgs(bigint) overload fixes policies on bigint org-id tables. Project visibility changed to deny-by-default: non-admin users need explicit project_members rows, with a backfill that materializes current access as viewer rows during upgrade. Chat and AI gates moved from project.read to project.view; project.read remains a dataset-style convention rather than a granted project-tier role. Personal Access Tokens gained per-user caps (PAT_MAX_PER_USER), optional per-token rate limits (PAT_RATE_LIMIT_PER_MIN), granular scopes, HMAC-SHA256 hashing with dual-read upgrade-on-use, org-admin governance endpoints (GET /api/auth/tokens/admin, DELETE /api/auth/tokens/admin/{id}), read-only scoped tokens, and a 90-day default expiry. Sign-in aliases are backed by honeyframe.user_email_aliases and admin CRUD at GET/POST/DELETE /api/users/{id}/emails.
Data policies and platform hardening. Org-aware meanings landed through honeyframe.meanings and /api/meanings, with built-in meanings as the platform floor and org-scoped overrides. PII policy became consistent across catalog and runtime through PII catalog CRUD, an admin UI, a unified masking-policy resolver, and a single column-doc spine. Security hardening also covered stored-XSS render paths, fail-closed SSO tenant handling, unauthenticated service endpoints, shell-injection gates for build triggers, SSRF guards on outbound reporters and download recipes, schema deny-lists for platform/internal schemas, superadmin-only admin-log browsing, org-scoped dashboard_collections, and environment-only external BI admin login config.
Asset Registry and Administration. Asset Registry now covers agents, dashboards, webapps, API services, data APIs, and agent tools with lifecycle stage (dev, staging, prod), owner, certification, version history, review verdicts, bulk actions, approval policy (governance_policy), last-used activity, page/card counts, and append-only audit in asset_governance / governance_audit. Endpoints include GET /registry, PUT /registry/{id}, POST /registry/bulk, GET /registry/{id}/audit, GET /registry/members, and GET/PUT /registry/policy. Administration moved from mock parity to real backend data for License, Security, Monitoring, Organization settings, SMTP, SAML/OIDC clients, webhooks, backups, branding, audit, usage, cost, and system health.
Knowledge Banks & Prompt Studio
Knowledge Banks. Knowledge Banks gained settings for embedding_model, chunk_size, chunk_overlap, top_k, and similarity_threshold; create-from-KB tools via POST /api/knowledge-bases/{id}/create-tool; clear via POST .../clear; embed health fields (embed_ready, docs_failed, docs_warned); direct file and Markdown upload through POST /knowledge-bases/{kb_id}/docs; Agent Builder link/unlink; registry-driven vector-store and embedding wiring; KB usage reverse lookup; impact-aware delete guards; a Pinecone-compatible managed vector-store connector; and a built-in numpy vector store for compiled installs, with honest VectorStoreUnavailable / 503 behavior when a backend is unavailable.
Prompt Studio. Prompt Studio added multi-LLM compare (POST /api/prompt-studio/compare, up to six models), test-from-KB grounding, append-only prompt versioning in prompt_versions, Save/History/Revert, DSS-parity workbench modes, test cases, examples, comparison, history, and validation.
Ops, Scenarios & Jobs
Scenario platform and Jobs. Scenario automation gained Microsoft Teams reporters, sql_query triggers, nested scenario runs, notebook export, SharePoint folder sync, marked_as_test, run_as_user, a New Scenario modal, Sequence-of-steps and Custom Python modes, a shared step executor with run_condition, max_retries, and ignore_failure, Dataiku-aligned Build-step labels, after_scenario triggers with grace_delay_sec, multi-trigger storage in honeyframe.scenario_triggers, concurrency guard (409 plus force), paginated run history, scenario run-detail timelines, durable per-step/activity log capture, and admin log views. Jobs now expose build-activity rows (job_type='build_activity'), GET /pipeline/jobs?scope=all, a Jobs browser, and a three-pane Job Detail page with smart log tail.
Monitoring and heavy-job isolation. Ops UI/backend parity added a system/scenarios/jobs/agents monitoring fleet overview. Heavy jobs can now be launched from a lightweight custom_script scenario step through systemctl start --no-block <unit>.service, isolating long-running work in its own cgroup instead of the scheduler process. The monthly retention monitor pattern compares source and archive date floors/ceilings and flags pruned, stale, or gap states.
Install and update reliability. honeyframe update now excludes DuckDB scratch files from backups through BACKUP_TAR_EXCLUDES, degrades backup timeout to WARN instead of aborting mid-update, no longer restarts oneshot job units, and preserves HOME=/root on DuckDB scenario units. All backend DuckDB connections pin temp files out of the install tree with HONEYFRAME_DUCKDB_TMP. The CLI redacts sensitive auth values at print boundaries, connector test health checks decrypt connection auth material before validating, and test conftests disable the LLM response cache to prevent order-dependent test pollution.
Code Environments, Theming & Localization
Code environments and engines. Managed Python code environments now use declared package manifests, per-recipe selection, and a code-env interpreter wired into Python recipes. organizations.engine_profile is exposed on /api/auth/me, and native-engine UI gating hides dbt-only surfaces when engine_profile != 'dbt'.
Theming and localization. Web and mobile shells gained dark, light, and system-follow theme preferences; WebView-hosted assistant pages receive the native theme through injected localStorage. Org custom visualization themes now support palette CRUD, default selection, import, and export. Bahasa Indonesia / English preference is available in web and mobile settings, and the same preference controls AI response language through response_lang on ChatRequest / ChatStreamRequest with a system prompt directive.
Developer, SDK & API
SDK publishing discipline and wrappers. The honeyframeapi SDK accumulated many wrappers under the version-freeze policy introduced after 0.1.6: meanings registry methods, notebooks, plugin recipe types, register_source_table, register_schema, webapp_key / page_key on chat, theme builders, leaderboard_card(), form builders, html_block(persist_key=, emits_filters=, allow_cdn=), client.stream_chat(), Agent.ask_stream(), _sse.py, client.stream_chat(images=...), client.send_push(), and examples such as examples/director_briefing.py. v0.1.73 adds self-typed asset handles, a mypy gate, dashboard public-links/PDF/templates/collections/shares/revisions/filters, scenario triggers and reporters, connector user-auth rotation, dataset versions, and documentation refreshes.
API surface area. New or expanded endpoints across this span include /api/webapps/theme-options, /api/webapps/{key}/theme, /api/webapps/{key}/ai-theme, /api/webapps/{key}/ai-edit, /api/webapps/capabilities, /api/webapps/{key}/scores, /api/public/webapps/{key}/scores, /api/(public/)webapps/{key}/forms/{form_id}/submit, /api/chat/stream, /api/ai/personas, /api/ai/capabilities, /api/ai/policy, /api/agents/{id}/cost, /api/agents/{id}/data-access, /api/org/usage/cost, /api/org/usage/budget, /api/org/usage/agents, /api/org/usage/guardrail-alerts, /api/org/usage/alert-history, /api/users/{id}/emails, /registry*, /api/statistics, /api/flow/check-consistency, /api/flow/copy-subflow, and /api/dashboards/generate/stream.
Upgrade notes
- Several releases in this span ship schema migrations that auto-apply on first boot of the new binary through
honeyframe update. Notable additions includehoneyframe.meanings,project_wiki,discussions,webapp_scores,catalog_collections,catalog_collection_items,column_profiles,column_metadata,llm_usage_ledger, memory tables,chat_sessions.summary,chat_sessions.agent_state,asset_governance,governance_audit,prompt_versions,scenario_triggers, anddashboard_public_links.purpose. - Action required: the deny-by-default project visibility change must deploy with its backfill migration. Deploying code without the registered backfill can lock non-admin users out of projects they previously saw.
- PAT storage moved to HMAC-SHA256 with dual-read upgrade-on-use, and new tokens default to 90-day expiry. External tooling that recomputed the old hash format directly must switch to normal token authentication.
/api/chat/streamno longer lets a client-sentbody.modeloverride a published agent's governed connector. Integrations that depended on that override now receive the agent's configured routing.- RLS policies on bigint org-id tables now apply correctly after the
row_in_session_orgs(bigint)fix. Installations that previously had silently-open rows should expect access-controlled behavior after upgrade. - Compiled installs use the built-in numpy vector store by default when Chroma is unavailable. Existing Chroma-backed Knowledge Banks on compiled installs use the new honest-503 path until moved to a supported backend.
- The v0.1.73 SDK reshapes dashboard handles around typed public-link, PDF, template, collection, share, revision, and filter resources; check SDK migration notes before documenting or updating automation that targets those methods.