poc: scaffold basic tangent dashboard ux#2360
Draft
maxy-shpfy wants to merge 1 commit into
Draft
Conversation
This was referenced Jun 3, 2026
🎩 PreviewA preview build has been created at: |
This was referenced Jun 3, 2026
Collaborator
Author
This was referenced Jun 3, 2026
9616807 to
c3c72a4
Compare
cd6ed84 to
b43711f
Compare
This was referenced Jun 3, 2026
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.

Description
Introduces the Tangent dashboard as a Phase 1 prototype — a new section of the app that surfaces ML pipeline optimization opportunities for the Search team. The feature is entirely driven by a mocked API layer (with simulated network latency) so the UI can be built and reviewed before the real backend endpoints are available.
Routes added:
/tangent—TangentDashboardView: lists all pipelines ranked by opportunity score, with filter support (my_pipelines,no_scenario,has_results) and a "Re-analyze all" action./tangent/$runId—TangentProjectDetailView: shows per-pipeline details including current performance metrics vs baseline, Tangent analysis summary, experiment ideas (both Tangent-generated and human-submitted), and previous optimization results.Layout:
TangentLayoutwraps both routes with a fixed sidebar containing navigation filters, links back to the main dashboard, docs, settings, footer links, and a git commit version stamp.Components:
OpportunityScoreRing— SVG ring that renders a 0–100 score with color bands (green ≥ 70, amber ≥ 45, grey below).PipelineRow— clickable table row with cmd/ctrl+click support for opening in a new tab.ScenarioStatusBadge,RunStatusIndicator,MetricDelta,IdeaTypeChip— status and metric display primitives.HeroBanner+StatBoxes— hero section with team-level stats (members, scenarios, pipelines with results).AnalyzeRunBlock— input for pasting a Tangle run ID, with format validation (stub in Phase 1).CurrentPerformance,TangentAnalysis,ScenarioSection,IdeaCard,ResultsSection.Data layer:
types.tsdefines all domain types (TangentPipeline,ExperimentIdea,TangentResults,TeamStats, etc.) andTangentQueryKeys.tangentApi.tsprovides mocked fetch functions (fetchTangentPipelines,fetchTangentPipeline,fetchTangentStats,reanalyzeAllPipelines) that resolve from in-memory fixtures with a 350 ms simulated delay. These are the single swap point when real endpoints land.useTangentPipelines,useTangentPipeline,useTangentStats,useReanalyzeAll.The
src/routes/tangentdirectory is also added to the React Compiler enabled paths.Related Issue and Pull requests
Type of Change
Checklist
Screenshots (if applicable)
Test Instructions
/tangent— the dashboard should load with the pipeline table ranked by opportunity score.My pipelines,No scenario,Has results) to verify the table filters correctly./tangent/<runId>and verify the detail view renders performance metrics, analysis, scenarios, and (forqueryEncoderPipeline) the results section.Additional Comments
All API calls in this phase resolve from
mockData.tsfixtures. No real network requests are made. The mocked service layer intangentApi.tsis the only file that needs to change when the backendTangent/*endpoints are ready.