Rework the dashboard to serve both ICPs — the consumer who calls inference apps and the one who publishes them#4
Open
adamsoffer wants to merge 10 commits into
Open
Rework the dashboard to serve both ICPs — the consumer who calls inference apps and the one who publishes them#4adamsoffer wants to merge 10 commits into
adamsoffer wants to merge 10 commits into
Conversation
Evolve the developer dashboard's information architecture to serve both the consumer (calls inference apps) and operator (deploys apps) without splitting the UI by persona — the organizing axis is the workspace's relationship to the network, framed by call direction. Vocabulary (grounded in the Runner SDK + gateway): - model/capability → "app" (a deployed pipeline; capability stays a network/protocol concept only) - Workspace → Organization (with public /orgs/[slug] profiles) - runs/jobs → "calls" (the SDK uses request/session; "calls" is the consumer-facing umbrella over batch + live) Routes & nav: - models/[id] → apps/[id] (ownership-gated tabs folded in) - /jobs → /calls (standalone Calls log; removed stale "jobs" naming) - Environment (Production/Development) as a per-page facet + switcher - sidebar rebuilt into home / network / environment / organization zones Home — "mission control" console: - command bar (org readout + greeting + adaptive attention line that names the most urgent thing, e.g. an erroring app) - two even-height panels: Deployed apps (what you serve) and Usage (what you consume, incl. spend on apps you didn't deploy) - Recent activity = the workspace's own calls (preview of /calls) Calls view: - Batch / Live segmented filter; metric column adapts (latency for batch, session duration for live, "Elapsed" when mixed) - live, in-progress sessions render a pulsing dot + ticking elapsed and sort to the top (new "active" AccountActivityStatus) All surfaces remain mock-data-only; typecheck, lint (0 warnings), and production build pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
- Home "Recent activity" subheader: "requests this workspace made" → "calls your organization made" (drops two retired terms at once). - Replace every remaining "workspace" with "organization" across copy, comments, and mock owner labels (the Modal note reworded to "account/ org tier"); zero "workspace" references remain. - Deployed apps panel: the hero number is now the app count (it read as "51.4K apps" under the count-noun title). Calls served moves to the right-aligned secondary, mirroring the Usage panel so both stay even-height. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Drop the "Period 7d" selector and "View usage" link from the Home header. The page mixes timeframes (calls · 7d, spend · MTD, relative activity), so a page-wide period control is misleading, and "View usage" duplicates the sidebar item + the Usage panel's own link. - Recent activity subheader: "calls your organization made" → "calls you've made" (it's already your org's dashboard, so naming the org is redundant). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The dashboard's operator deploys/publishes apps; orchestrators (via gateways) actually run the pipeline and serve the inference. Reword the Home composition note and the org-fleet / org-consumption / AppsHealthPanel comments from "what you serve" / "SERVE ledger" / "calls served" to the accurate deploy-vs-consume framing (call volume = calls the network handled for your apps). Comments only — no rendered-UI change. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…gated tab Overview is a read-only summary (KPIs + deployment metadata), so it shouldn't be owner-gated. Move it out of the owner-only set into the shared consumer tabs — it leads whenever the app is deployment-backed (has a pipeline), so anyone viewing the app sees it; catalog-only entries with no deployment don't get an empty Overview. Settings is now the sole ownership-gated tab. Also fixes the stale tab comments (incl. the incorrect "Logs & Settings (trail)" note — Logs was always a consumer tab). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Recent activity panel previews the org's individual calls, whose full log is /calls — not the aggregate /usage dashboard. Repoint "View all" (and the doc comment) accordingly. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Root `/` now redirects signed-in users to /home (the dashboard default);
signed-out visitors keep the Explore catalog there as the public landing.
So Explore stays reachable for signed-in users without bouncing, the
catalog is extracted into an <ExploreView> component and given its own
/explore route (the sidebar "Explore" item points there).
- app/(app)/page.tsx → thin client redirect (authed → /home, else ExploreView)
- app/(app)/explore/page.tsx → renders ExploreView (no redirect)
- components/dashboard/ExploreView.tsx → the catalog (moved from the old root page)
- nav + active-state: Explore href "/" → "/explore"; getNavActive "/" special
case removed; signed-out variant treats "/" and "/explore" as Explore
- repoint Explore-intent links ("/" → "/explore") in DashboardSearch,
SignInWall, ActivityPanel empty state, apps/[id] + orgs/[slug] fallbacks
- robots: allow /explore
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Authoring uses the Runner SDK; deploying uses the `livepeer` CLI (`livepeer init` / `livepeer push`). The onboarding "Deploy an example app" step and the Apps page intro both describe pushing/deploying, so they should name the CLI, not the SDK. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Clicking a call row now opens a right-side slide-over inspector instead
of dead-ending on /usage (which never handled ?request=). It's URL-
addressable at /calls?request={id} — deep-linkable, back-button closes.
- Drawer primitive gains a `right` side (480px slide-over).
- New CallDetailDrawer: status · Batch/Live · env · timing metrics
(latency for batch, duration for live) · cost · caller, plus the
request/response payloads (batch) or a session summary (live). Payloads
are mock, shaped by the pipeline.
- CallsView reads ?request= (Suspense-wrapped), holds the row through the
close transition so the drawer animates out with content intact.
- Call rows (CallsTable + Home ActivityPanel) link to /calls?request={id}.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Instruction copy should use the product noun ("app"), consistent with
"Deployed apps" / "Deploy an example app". "Pipeline" is the SDK-layer
artifact term, best reserved for describing what you author.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
What & why
Evolves the developer dashboard's information architecture to serve both ICPs — the consumer who calls inference apps and the one who deploys them — without splitting the UI by persona. The organizing axis is the workspaces relationship to the network, framed by direction — apps you deploy to the network (which orchestrators serve on your behalf) vs. apps you consume from it. Everything stays mock-data-only.
Vocabulary (grounded in the Runner SDK + gateway)
make_app(pipeline))./orgs/[slug]profiles (GitHub-style).runner-sdk.md+ the gateway client.)Routes & navigation
models/[id]→apps/[id](owner-only Settings tab folded in; Overview, Logs, etc. are shared)./jobs→/calls— promoted to a real nav item; removed the stale "Jobs" naming/copy and rebound theg cshortcut./redirects logged-in users to/home; signed-out visitors keep the Explore catalog at/(the public landing). Explore gets its own/exploreroute so signed-in users can still browse it.home / network / environment / organizationzones.Home — "mission control" console
/calls.Calls view
activestatus onAccountActivityRow).Reviewer notes
lib/dashboard/); new single-source helpersorg-fleet.ts/org-consumption.tskeep headline numbers consistent across surfaces.?key=/?capability=params on inbound links to/callsare carried over but not yet wired to pre-filter (no-ops before too).activecall deep-links to the standard request inspector for now; a live inspector is a follow-up.✅
pnpm typecheck,pnpm lint(0 warnings), andpnpm buildall pass.🤖 Generated with Claude Code