Lewati ke konten utama
Versi: v0.0.82

v0.0.58 — Three-mode dashboard picker

Released: 2026-05-07.

View / Edit / Full mode picker

The binary "Chat mode" toggle is replaced with a 3-way segmented picker in the dashboard header:

ModeAudienceUI
View95% of traffic (directors, ops managers, casual viewers)Metabase-clean. No toolbar, no chat panel. Default.
EditAnalysts who like AI-driven authoringFigma-Make-style chat-primary. Chat panel as a flex rail on the left, canvas on the right. Toolbar hidden.
FullOperators who want the v0.0.55 chromeLegacy MSTR-style. Toolbar Row 2 + sticky bottom AI bar both visible; chat panel mounts as a collapsible overlay alongside.

Selection persists per user via localStorage (honeyframe.dashboard.mode). The v0.0.56–v0.0.57 boolean key (chat_primary='1'/'0') is migrated automatically. Non-editors and kiosk users silently collapse to View regardless of preference.

Full mode is transitional — kept while we validate Edit covers every legacy capability. Planned to retire in v0.0.60+ once telemetry shows it rarely used. The toolbar code is NOT deleted; it's just gated behind Full mode.

View mode is genuinely read-only

showEditAffordances is threaded through the most visible canEdit-gated edit chrome: the inline title editor, + Add Card / + From Template buttons below the grid, the Add page tab button. View mode no longer shows these, even for users who can edit.

Chat covers every mutation type

The /ai-chat intent router grows from 4 actions (answer, create, modify, insights) to 9 — chat is now functionally equivalent to the toolbar for editing tasks. New chat actions:

  • set_period — set the dashboard time scope (column / start / end / preset)
  • add_filter / remove_filter — manage dashboard-level filters
  • remove_card — delete a card by ID
  • set_layout — bulk grid coordinates

Each branch goes through apply_mutations() so chat-driven edits hit the same dedup + snapshot infrastructure as the explicit /mutations endpoint. Bad LLM output (missing filter_id, invalid mutation type) degrades into a conversational "couldn't apply that" turn rather than 500-ing.

Period chip in the header (View + Edit modes)

A Figma-Make-style date-scope chip in the dashboard header. Clicks open a small popover with 8 presets (All time, Last 7d / 30d / 90d, This month, Last month, This quarter, YTD). State reuses the existing quickRange / filterStart / filterEnd source of truth, so a Full → View → Edit mode flip preserves the choice.

Opt-in per dashboard: the chip only renders when the creator has set a date column. Dashboards that never get a date column configured stay chrome-free.

DashboardsPage split — list vs detail

The 6,075-line DashboardsPage.tsx held two distinct routes (the list at /dashboards and the per-dashboard detail at /dashboards/:dashboardId) behind a single component. v0.0.58 Phase B splits the file along the route boundary so future detail-mode work has a bounded file to live in. The list page is now 2,810 lines; the detail page is 5,713 lines. No behavior change.

Release-bundle fix — daily extract pipelines restored

build_release.py never copied paas/api/, so the Postman environment JSON that a customer integration's source extractor reads to discover its per-source base URLs has been missing from every tarball since the /opt/honeyframe/ install-path migration. The daily pipeline crash-failed its extract step with FileNotFoundError, leaving the raw landing tables stale (10+ days behind on prod as of 2026-05-07) and the downstream dbt_run step skipped. paas/api/*.json is now bundled the same way paas/scripts/ is, with a contract test guarding against regression.