Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

RecordActivityTimeline 收下 loading 却完全不读——取数中的 feed 显示的是"暂无活动" #3205

Closed

Description

@os-zhuang

packages/plugin-detail/src/RecordActivityTimeline.tsx 的 props 里声明了 loading,解构时直接改名丢弃:

loading: _loading = false,

整个文件再没有第二处引用它。后果:feed 还在取数的那段时间,面板渲染的是空态 DataEmptyState(默认文案 "No activity recorded"),而不是加载态。用户看到的是"这条记录没有活动",然后数据到了再突然跳出来。

这与 #3165 是同一类形状(声明了、没人读),只是发生在组件的 props 而不是 block 的 inputs 上——RecordChatterPanel 也把 loading 透传下来,record:activity 修好之后也会传(自取数期间为 true),所以现在这条链上确实有真实的 loading 信号可用,只差最后一段没接。

建议

在 filtered.length === 0 的分支前加一个 loading 分支:骨架屏或一行 spinner(Loader2 已在本文件导入,"Load more" 用的就是它)。注意别在 loading 时渲染空态文案——那正是本 issue 的现象。

参考

Activity

  1. self-assigned this
    on Aug 2, 2026
  2. os-zhuang commented on Aug 2, 2026

    @os-zhuang
    ContributorAuthor

    认领:PM 循环第 3 轮(分片:objectui 整仓)
    会话:session_01PRJtkgUAaVG11FsJQbvZWA
    分支:claude/issue-3205-activity-timeline-loading-state
    Worktree:objectui-issue-3205

    分诊补充:按正文修法,在 filtered.length === 0 分支之前加 loading 分支,复用文件里已导入的 Loader2;关键判据是 loading 期间不得渲染空态文案。#3165 已把 loading 真实算出来并透传(自取数期间为 true),所以信号是活的,只差这最后一段。顺带确认 RecordChatterPanel 那条透传链端到端成立,并用测试钉住"取数中 ≠ 空态"。


    Generated by Claude Code

  3. os-zhuang commented on Aug 2, 2026

    @os-zhuang
    ContributorAuthor

    验收:ACCEPT → PR #3210(CI 全绿,进入合并)。

    交付内容:① loading 分支置于空态分支之前,复用已导入的 Loader2,带 role="status" / aria-live="polite";② 守卫是 loading && filtered.length === 0 而非单看 loading——刷新 / "Load more" 往返不把已在屏幕上的行顶掉(该按钮自带 spinner);③ collapseWhenEmpty 不抑制 loading 行,理由写进注释:那个 flag 说的是空,而取数中还不知道空不空;④ 无任何 prop / 签名变更、无新 i18n key——本次修复的全部内容就是"声明了的 prop 终于有人读";⑤ 13 条测试按三层分别钉住(组件 / 面板三种 position / block 自取数),并做了反向验证:把新分支短路成 false 后 7 例失败。

    范围核对:3 文件全部在范围内,未触碰 #3206(同文件的 FeedFilterMode),符合分诊要求。

    链路缺口已按越界发现立案:#3209(RecordDetailView / record-chatter.tsx 再往上一跳从不传 loading,两个 find 期间没有 loading state),已入 pm:queue。


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions