feat(dashboards): add read-only kiosk mode#2703
Conversation
Co-authored-by: Mike Shi <mike@hyperdx.io>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
🦋 Changeset detectedLatest commit: a58a3c8 The changes in this PR will be included in the next version bump. This PR includes changesets to release 3 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Greptile SummaryThis PR adds a URL-backed read-only kiosk mode for dashboards. The main changes are:
Confidence Score: 5/5This looks safe to merge.
|
| Filename | Overview |
|---|---|
| packages/app/src/hooks/useDashboardKioskMode.ts | Adds URL query-state handling for entering and exiting kiosk mode. |
| packages/app/src/DBDashboardPage.tsx | Wires kiosk mode into dashboard chrome, read-only tile behavior, layout locking, and live refresh. |
| packages/app/src/components/DashboardContainer.tsx | Adds read-only gating for group and tab authoring controls. |
| packages/app/src/layout.tsx | Hides global app navigation and banner chrome for dashboard kiosk URLs. |
| packages/app/tests/e2e/features/dashboard.spec.ts | Adds E2E coverage for entering, persisting, and exiting kiosk mode. |
Reviews (6): Last reviewed commit: "Merge branch 'main' into cursor/dashboar..." | Re-trigger Greptile
E2E Test Results✅ All tests passed • 243 passed • 1 skipped • 1005s
Tests ran across 4 shards in parallel. |
Co-authored-by: Mike Shi <mike@hyperdx.io>
Co-authored-by: Mike Shi <mike@hyperdx.io>
react-grid-layout retains a .react-resizable-handle element in the DOM
when isResizable={false}, making it CSS-hidden rather than removing it.
The previous toHaveCount(0) assertion failed because 1 element was still
present in DOM.
Change the assertion to toBeHidden(), which passes for both CSS-hidden
elements and elements that do not exist at all — matching the actual
user-visible contract (handles non-interactive in kiosk mode).
The page object JSDoc already stated 'absent or hidden', so only the
spec assertion needed updating.
Co-authored-by: Mike Shi <mike@hyperdx.io>
Co-authored-by: Mike Shi <mike@hyperdx.io>
Co-authored-by: Mike Shi <mike@hyperdx.io>
🟡 Tier 3 — StandardIntroduces new logic, modifies core functionality, or touches areas with non-trivial risk. Why this tier:
Review process: Full human review — logic, architecture, edge cases. Stats
|
Deep Review🔴 P0/P1 — must fix
🟡 P2 — recommended
🔵 P3 nitpicks (12)
Reviewers (9): correctness, adversarial, testing, maintainability, kieran-typescript, julik-frontend-races, performance, project-standards, agent-native. Scope caveat: Testing gaps:
|
Summary
Add a shareable, URL-backed kiosk mode for dashboards intended for static displays. Kiosk mode reduces the app to the dashboard name and live/read-only status, locks all dashboard authoring controls, and forces automatic refresh including live behavior for trace/search tiles.
Kiosk mode deliberately does not control browser fullscreen. Viewers can choose browser or operating-system fullscreen independently without changing kiosk state. The saved dashboard is never changed; tab and group expansion remain viewer-only URL state.
Screenshots or video
dashboard_kiosk_url_only_demo.mp4
How to test on Vercel preview
Preview routes: /dashboards
Steps:
/dashboards, select Create New Saved Dashboard, and add a chart tile.kiosk=trueand only the dashboard name, Live · Read-only status, exit control, and dashboard tiles remain visible.Validation
References
To show artifacts inline, enable in settings.