feat(den): replace dashboard home with telemetry usage insights MVP#1658
Merged
benjaminshafii merged 8 commits intodevfrom May 6, 2026
Merged
feat(den): replace dashboard home with telemetry usage insights MVP#1658benjaminshafii merged 8 commits intodevfrom
benjaminshafii merged 8 commits intodevfrom
Conversation
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…d dashboard - den-db: add telemetry_events table with org/user/type/timestamp schema - den-api: add POST /v1/telemetry/ingest and GET /v1/telemetry/adoption endpoints - app: add fire-and-forget telemetry reporter that activates on Den sign-in - app: emit session.active event when OpenCode session is created - dashboard: wire adoption metrics to real /v1/telemetry/adoption endpoint - typeid: register telemetryEvent type ID prefix (tev)
Member
Author
End-to-end telemetry verificationTested the full telemetry pipeline locally with Steps
Result
Full pipeline working: app event → ingest endpoint → DB → adoption query → dashboard. |
Member
Author
Verification (make-pr skill)Build
UI verification (Chrome MCP)
API verificationScreenshotsFull pipeline verified: app event → |
- Merge PluginIcon + SkillIcon into single GradientTile component - Remove dead Puzzle and Zap imports - Replace useState/useEffect adoption hook with useQuery (uses existing DashboardQueryClientProvider) - Fix AreaChart preserveAspectRatio from 'none' to 'xMidYMid meet' - Rename weeklyTrend constant to FALLBACK_WEEKLY_TREND with doc comment - Extract fetchAdoption as a standalone async function for react-query
src-opn
requested changes
May 5, 2026
- den-db: rename user_id column to member_id in telemetry_events table - den-api: resolve org context middleware to get currentMember.id - den-api: rename response fields to activeMembers7d/activeMembers30d - dashboard: accept both field names for backward compat
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
/dashboardhome screen with an org-facing telemetry usage insights viewScreenshots
Dashboard with enterprise preview expanded (active users from real telemetry)
Dashboard with enterprise preview hidden (non-enterprise view)
Build verification
pnpm --filter @openwork-ee/den-db build— passedpnpm --filter @openwork-ee/den-web build— passedWhat was built
den-db
telemetry_eventstable:id,org_id,user_id,event_type,event_timestamp,created_at(org_id, event_type, event_timestamp)and(org_id, user_id)telemetryEventtype ID prefix (tev)gteoperator from drizzle barrelden-api
POST /v1/telemetry/ingest— batch ingest, auth-extracted identity, always returns 204GET /v1/telemetry/adoption— members, pending invites, active users 7d/30d, 12-week weekly trendsrc/routes/telemetry/index.ts, registered inapp.tsapp
den-telemetry.ts— fire-and-forget reporter, lazy activation on Den sign-in, batched POSTs, no retries, no local storagetrackSessionActive()wired intoactions-store.tswhen OpenCode creates a sessiondashboard
GET /v1/telemetry/adoption, falls back to org context data if unavailable