E2.1: cut legacy hardware/dashboard frontend, add landing page - #68
RaapTechllc wants to merge 3 commits into
Conversation
… Usage Sequenced deletion series for the retired Mini-PC hardware, CLI, dashboard and prototype surfaces, verified against a dependency inventory so keepers (agentbench, Agent Cabinet, known_models catalog) are untouched. Defines the Era 2 product and seven 'not slop' acceptance rules for every chart and number. Co-authored-by: RaapTechllc <RaapTechllc@users.noreply.github.com>
Delete Dashboard, Hardware, Submit, Compare, BenchmarkDetail, Leaderboard, MoaCalculator pages and their components/libs/tests; strip legacy types and endpoints from api.ts. Replace / with a landing that shows what changed since the last visit (new catalog models, newest Agent Cabinet runs, Usage Board as-of) plus one entry card per surface. /leaderboard now redirects to /models. Co-authored-by: RaapTechllc <RaapTechllc@users.noreply.github.com>
Co-authored-by: RaapTechllc <RaapTechllc@users.noreply.github.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9562475e25
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if (c.status === 'fulfilled') setCabinet(c.value); | ||
| if (u.status === 'fulfilled') setUsage(u.value); | ||
| setLoading(false); | ||
| window.localStorage.setItem(LAST_VISIT_KEY, new Date().toISOString()); |
There was a problem hiding this comment.
Advance the visit marker only after successful feed loads
When any request is rejected (for example, during a temporary backend outage), Promise.allSettled still reaches this write after leaving the corresponding state as an empty array. The page therefore presents an API failure as an empty feed and records the current time; once the API recovers, models or runs created before that marker will never receive a new badge. Only advance the marker for successfully refreshed feeds, and preserve/report failures rather than treating them as empty data.
Useful? React with 👍 / 👎.
| <SurfaceCard to="/models" icon={Trophy} eyebrow="Solo Cabinet" title="Single-model screening" asOf={catalogAsOf}> | ||
| Pinned decoding, executable graders, 95% CI bars. Cheap first pass before spending on agent runs. | ||
| </SurfaceCard> | ||
| <SurfaceCard to="/agents" icon={Bot} eyebrow="Multiplayer Cabinet" title="Mixture-of-agents configs" asOf={cabinetAsOf}> |
There was a problem hiding this comment.
Derive Multiplayer freshness from Multiplayer data
When Agent Cabinet and /agents are updated at different times, this card reports cabinetAsOf, which is computed exclusively from /api/v1/agent-cabinet/runs; those are separate product surfaces and storage contracts. A new Multiplayer run will not change the displayed date, while an unrelated Agent Cabinet run will, so the landing page gives users a false freshness signal for the linked /agents surface. Fetch or expose a timestamp from the Multiplayer leaderboard instead.
Useful? React with 👍 / 👎.
First step of
docs/PLAN-era-2-cut.md(PR #67). Frontend only; no backend or schema changes.Deleted
Dashboard,Hardware,Submit,Compare,BenchmarkDetail,Leaderboard,LegacyLeaderboardRedirect,MoaCalculatorBandwidthBadge,MemoryLabelsubmitForm,bandwidth,legacyNotice,moaCalculator(+ their tests)api.ts: legacyBenchmark/HardwareSpec/ModelQuality/LeaderboardEntry/Stats/ReferenceProfiletypes and the/benchmarks,/submit,/leaderboard,/hardware,/profiles,/compare,/stats,/models,/openrouter/compareclient callsAdded
pages/Home.tsxlanding: "what changed" feed (new catalog models via/api/v1/agents/models/new, newest Agent Cabinet runs, Usage Boardas_of+ live/fixture badge) and one entry card per surface with its as-of. No charts.lib/home.jspure freshness helpers +tests/home.test.mjs(first visit never fabricates "new")./leaderboardis a plainNavigateto/models; unknown routes redirect to/.Not in this PR (per plan)
frontend/src.Verification
cd frontend && npm run lint && npm test && npm run buildgreen (44 tests).Manual check against a synthetic mock API (clearly labelled fixture rows, not benchmark data): landing first visit, return visit with
newbadges,/leaderboard->/models,/hardware->/, run link ->/agent-cabinet/runs/:id.Landing on a return visit, new badges on items newer than last visit
To show artifacts inline, enable in settings.