Repository navigation
feat(web): animate running SOP node activity - #178
AaronWangCong wants to merge 2 commits into
Conversation
|
LoopForge PR Review — head Verdict: ✅ Pass
|
fx-kurumi
left a comment
There was a problem hiding this comment.
PR #178 review — head 570042e6fb0fe512e6b44dc9396959201ed36281
Recommendation: REQUEST_CHANGES (confirmed asset-cache defect). UI acceptance: blocked, not passed.
Fix the immutable stylesheet URL
web/observability.css introduces the spinner and shimmer styles, but web/index.html:16 still requests /observability.css?v=20261031metrics2. The server's internal/httpapi/gin_helpers.go:152 serves versioned CSS with Cache-Control: public, max-age=31536000, immutable.
A returning browser that has cached that URL can keep the pre-PR stylesheet after deployment. The new JavaScript classes then have no corresponding motion styles, so these users do not see the feature. Bump the asset version or use a content hash, and verify upgrade behavior with an already-cached stylesheet.
Independently executed checks
node --test LoopForge/webtest/tests/runs-detail.test.mjs: 10 passed, 0 failed.node --check LoopForge/web/app/runs.js: passed.
Not executed / evidence limitation
I did not start the real application, open its live UI, or capture screenshots/video in this review. This environment has Chromium, but no Go or Docker in PATH and no installed Playwright/Puppeteer or ffmpeg. The DOM tests above do not establish visual or interaction acceptance. Real-service UI checks with synthetic data and fresh screenshots/video are still required before giving UI acceptance.
The prior ordinary Pass comment is not a formal APPROVED review. This report is tied to the head SHA above; a new commit requires a fresh review and new visual evidence. No production user data, credentials, or internal endpoints are included.
PR #178 re-review — head
|
| Light | Dark | prefers-reduced-motion: reduce |
|---|---|---|
![]() |
![]() |
![]() |
| ▶ recording | ▶ recording | ▶ recording |
- Light and dark (
agentflow.theme.v3=darkfor dark): the status pill carriesis-runningand its::beforeanimatesnode-status-spin. The activity text animatesnode-activity-shimmer. The activity label updates in place (step-9→step-16…) without restarting the animation. - Reduced motion: both animation names compute to
none. The status still reads 运行中. - No page errors in any run.
Executed checks
node --test webtest/tests/runs-detail.test.mjs: 10/10 pass.node --check web/app/runs.js: ok.
Not covered
Nested child-SOP pause/cancel was covered by the PR's DOM tests only; I did not reproduce it live. CI workflows for this SHA are still action_required.
|
✅ 结论:Approve(通过) 审查 head 核对要点
可选(非阻塞)
验证
|
撤回:该 Request changes(静态资源 ?v= 未更新导致缓存)是误报——internal/httpapi/studio.go 的 stampStudioIndex 会按文件内容哈希实时改写资源版本。更正说明见 issuecomment-6795866525。
复审 head
|
|
LoopForge PR Review — head Verdict: ✅ Pass
No blocking issues found. |



What changed
The selected SOP node's inspector previously showed plain activity text, making it hard to tell whether work was still progressing. An executing node now shows a spinner beside its running status and a subtle left-to-right shimmer across its current activity text.
The animation follows the selected node and its child SOP's actual execution state. Completed nodes, human approval, pause and cancellation remain static. Streamed text updates retain the existing elements so the animation is not restarted by each log event. Light/dark themes, long activity text, reduced motion and forced colors are supported.
Scope
Compatibility
No API, workflow execution, schema, dependency or Runner protocol changes. This PR is based directly on upstream main and is independent of the Windows contribution in #172.
Validation
go test -p=2 ./... -count=1 -timeout=600sandgo vet ./...on Linux with Go 1.27.3 and the branch's prebuilt Gate helper.git diff --check.The initial browser checks used fixture rendering. The follow-up below also exercises a real local service and a synthetic script run, without model calls or changes to existing user runs. The entire deployed public browser suite and Classic/Portable checks were not run for this presentation-only change.
Review follow-up: stylesheet caching and live UI
The reported immutable-URL defect does not reproduce through the production HTML handler.
studioFileServerserves revalidated HTML and callsstampStudioIndex, which replaces handwritten CSS/JS queries with content hashes on every HTML request. The literal version inweb/index.htmlis not the URL delivered to a browser. No production caching or version-string changes are needed.Commit
8ae5221957b72660337c2541fa89c33fc6ee141badds regression coverage and fresh real-service screenshots with cache-upgrade acceptance details.?v=b5623289d4bd5745, then reused it from its HTTP cache on another normal document navigation (confirmed through CDP).?v=e10036f176cdcba1; the next normal navigation requested the new URL and displayed both animations. There was no cache clear, hard refresh or Playwright request routing.TestStudioIndexStampsAssetsWithContentHash,TestStudioStylesheetChangesInvalidateURLWithoutEditingIndex, andTestGinMiddlewareAndSmallViews. JavaScript syntax, public-content and whitespace checks passed.This is evidence for re-review; it does not claim a maintainer's UI acceptance.
Safety
Classic host bundles and third-party assets are unchanged.