Skip to content

[Video] add the read-only H3 performance history API and list / 新增只读的 H3 性能历史 API 与列表 - #1192

Open
edwingao28 wants to merge 3 commits into
masterfrom
feat/videogenx-performance-history
Open

edwingao28 wants to merge 3 commits into
masterfrom
feat/videogenx-performance-history

Conversation

@edwingao28

@edwingao28 edwingao28 commented Sep 20, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Reads already published H3 runs from Vercel Blob into a per-cell history projection (GET /api/video-runs?format=history) and lists them under /video?view=history with bilingual filters and result links, keeping execution identity and failure/qualification status. No new measurement. First of two stacked PRs; the /video dashboard follows.

AI model disclosure

  • Model/version: claude-fable-5-1 (Claude Code)
  • Role: implementation, tests and docs; the author directed and reviewed.

Validation

  • typecheck, lint, fmt, vitest (video-runs route and history, 27 pass) and the navigation e2e spec on the E2E_FIXTURES=1 server, run on the stacked dashboard branch that includes these commits; not re-run in isolation here.
  • I have completed the AI model disclosure and kept it current

中文说明

把已发布到 Vercel Blob 的 H3 运行读成按 cell 的性能历史投影(GET /api/video-runs?format=history),并在 /video?view=history 列出:中英文筛选、直达结果链接,保留执行身份与失败、资格状态。不产生新的测量。两个堆叠 PR 的第一个,/video 仪表板随后提交。

AI 模型:claude-fable-5-1(Claude Code),负责实现、测试与文档;作者把关方向并审阅。

验证:typecheck、lint、fmt、vitest(video-runs 路由与 history,27 项通过)及 navigation e2e(E2E_FIXTURES=1 服务器)在包含本分支提交的仪表板分支上运行;未在本分支单独重跑。


Note

Medium Risk
Changes default /video load behavior and adds blob index scanning plus new client navigation races; read-only and guarded by repo visibility, but UX and API surface for the hidden viewer expanded materially.

Overview
Adds read-only H3 performance history end to end: /video defaults to a Performance history tab instead of auto-scanning GitHub Actions, while Browse CI runs keeps the legacy Actions discovery path.

API & storage: GET /api/video-runs?format=history&page=N returns a versioned projection from existing Vercel Blob index metadata via publishedVideoHistory (paginated, newest publication first, no media download or publish). videoHistoryEntry maps stored artifacts into per-cell observations using existing serving/tradeoff logic, with explicit errors and null metrics where data is missing. E2E_FIXTURES=1 replays video-history.json with X-VideoGenX-Replay.

UI: New VideoHistory lists published runs with bilingual copy, URL-backed filters (history-hardware, history-concurrency, history-query), pagination, and links into the video viewer. VideoCIRuns adds ?view=history|results, published-first loading for Videos & result, cancels in-flight selection when returning to history, and preserves share URLs including history filters.

Docs & tests: docs/video-history.md documents read paths and evidence boundaries; Cypress/Vitest cover navigation, retries, stale-response guards, and catalog ordering.

Reviewed by Cursor Bugbot for commit 1d5084a. Bugbot is set up for automated code reviews on this repo. Configure here.

中文:新增只读 H3 性能历史。复用已发布产物索引,保留原始执行与导出身份、失败和资格状态,提供英中筛选与原结果直链,并以保留数据验证桌面和移动端交互。未创建新的性能测量或发布结果。
Open the first readable published artifact when Results has no selection.
Preserve the selected run, artifact, source and cell across refresh, retry
and reload, and cancel stale selection when returning to History.

中文:修复视频页的已发布 H3 结果入口。
未选择运行时读取已发布产物;刷新、重试和重新加载时保留运行、
产物、原始运行和并发配置,返回性能历史时取消过期选择。
@vercel

vercel Bot commented Sep 20, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
inferencemax-app Ready Ready Preview Sep 20, 2026 6:19pm UTC

Request Review

@github-actions

github-actions Bot commented Sep 20, 2026 •

Copy link
Copy Markdown
Contributor

Claude finished @edwingao28's task in 3m 12s —— View job


Review complete

  • Read changed files (route, history projection, storage, components)
  • Check CI status
  • Runtime verify /video?view=history and API
  • Review Chinese copy
  • Post findings

🟢 LGTM — no blocking issues found.

Runtime check (localhost:3000): /video?view=history renders, the Performance history tab toggles and shows pressed state, filters (Hardware / Client concurrency / workload search) render, and the error path degrades cleanly to "Could not load published history." + Retry. The only console error is a 502 from /api/video-runs?format=history, which is expected in this local env — no BLOB_READ_WRITE_TOKEN, so the dev branch proxies to SITE_URL and that fetch fails. Not a PR defect; the component handles it gracefully.

CI: Lint & Format ✅, Tests (Unit) ✅, Code Quality ✅ (E2E still running at review time).

What I checked closely and found sound

  • videoHistoryEntry / history.ts — null-safe throughout (at/number/text coerce cleanly; failed/uncalibrated cells preserved without inventing zeros), and per-source try/catch keeps one bad artifact from poisoning the page. Well covered by history.test.ts.
  • publishedVideoHistory — full-scan is intentional and documented (the ponytail: comment: materialize a catalog if inventory grows); index published last so partial uploads aren't observed; sort + pagination correct. video-storage.test.ts verifies ordering, 10-index read cap, and no media writes.
  • Route validation for format=history (rejects run/artifact/unsafe page), the dev-proxy identity checks, and the fixtures replay branch all look correct; route.test.ts covers the no-scan/no-publish contract.
  • VideoCIRuns view/deep-link wiring — initialView resolution, changeView aborting in-flight downloads, openResults/openPublished fallbacks, and the added setSourceId(source ?? '') reset (fixes opening a published source) all trace correctly. Overlay path N/A (this is the H3 video viewer, not the inference/eval chart path).
  • Test coverage present for every new module — no missing-test gap.

Non-blocking (Chinese copy, advisory)

  • no: '未经验证' renders under qualification: '发布验收' ("Release qualification"). 未经验证 reads as "not verified" rather than "not qualified"; 未通过验收 / 未达标 would track the source more closely. Low-confidence wording nit only — not pinging the maintainer. Overall the zh dictionary is natural and the fail→未通过 / failed→失败 status split is a nice distinction.
    · branch feat/videogenx-performance-history

@blacksmith-sh

This comment has been minimized.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 1d5084a. Configure here.

Comment thread packages/app/src/components/video-benchmark/VideoCIRuns.tsx
Comment thread packages/app/src/components/video-benchmark/VideoCIRuns.tsx

This branch was successfully deployed

1 active deployment
Preview — 1d5084a5 Deployed Sep 20, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant