Skip to content

fix(app-shell): a Studio list view's date sort reads Oldest → Newest - #28433

Merged
objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/project-thread-t38h8d
Oct 31, 2026
Merged

objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/project-thread-t38h8d

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Sales · project thread

Part of #27520 (row 7, the Studio half of the date-sort label; the console half landed in #28423)

Clause-②: no
Metadata-protocol: none
Skills-docs: none

维护者速读

  • 改了什么:Studio 列表视图属性面板把每个字段的 type 一并传给排序构建器,日期/日期时间字段的排序行显示「最早 → 最新」/「最新 → 最早」,不再是「A → Z」。
  • 为什么改:fix(plugin-list): a filter row with no value is not a filter, a date sort reads Oldest → Newest, one sort row per field, and an empty list says how to start #28423 让 SortBuilder 按字段类型显示时间方向,console 列表已传 type;Studio 面板只传了 { value, label },同一个日期排序在 Studio 里仍写着 A → Z。
  • 风险与回滚:只改一行前端传参,不改保存内容、不加翻译键、不动 spec。回滚即 revert 本 PR。
  • 先看:ui/packages/app-shell/src/views/studio-design/ObjectListViewInspector.tsx 中 <SortBuilder fields=…>;新测试 ObjectListViewInspector.dateSortLabel-27520.test.tsx。
  • 两分钟验证:pnpm --dir ui exec vitest run packages/app-shell/src/views/studio-design/ObjectListViewInspector.dateSortLabel-27520.test.tsx → 2 个用例全绿。
  • 需要你做的:无,席位落地。

What changes

On main 5da3a8ce, the Studio list-view panel handed SortBuilder its fields as { value: f.name, label: f.label }. SortBuilder picks the time wording only from a field's type, so a sort on a date field read "A → Z" in Studio while the console list read "Oldest → Newest". The panel now passes type: f.type (the type useObjectFields already returns). What is written to the view's sort is unchanged.

Tests

  • New: ObjectListViewInspector.dateSortLabel-27520.test.tsx mounts the real useObjectListViewDraft, the real panel, the real useObjectFields over a real MetadataClient and the real SortBuilder. A date row reads "Oldest → Newest", a datetime row "Newest → Oldest"; CONTROL: a text row still reads "A → Z".
  • Red first on main's source: the date case failed with Received: A → Z; the control passed.
  • Ablation via scripts/ablation-replace.mjs (type: f.type → type: undefined): 1 failed / 1 passed, then restored, blob == HEAD and git diff HEAD empty.
  • vitest run packages/app-shell/src/views/studio-design/: 281 files, 1993 tests passed.

Verification

Local readings at head b7745efc (merge of origin/main 4bc077d2).

  • dispatch-gates --commands: 34 derived, each run with its exit code captured; all 34 exit 0. --ran: "34 derived, 34 run, 0 NOT-MEASURED, 0 UNRUN".
  • node scripts/check-sdui-manifest.mjs: exit 0. eslint on the changed source and the new test: exit 0.
  • pnpm --dir ui --filter @object-ui/app-shell run type-check: exit 0.
  • No open PR touches ObjectListViewInspector.tsx (REST scan of open PRs' files).
  • Branch name is the harness-assigned claude/project-thread-t38h8d, named in the claim (6544990253).

Human Minimum

  • 1. Schemas start as Zod; packages/spec holds no runtime logic. (not touched)
  • 2. Every name I added uses the casing for its kind.
  • 3. No formatter ran; pnpm lint passes on the changed files.
  • 4. One issue, one branch off an up-to-date main, one pull request.
  • 5. A change that publishes carries a changeset, and both declaration lines are filled in here and in the changeset.
  • 6. packages/spec touched: n/a.
  • 7. No hand edits to generated references, changelogs or release notes.
  • 8. Title, body and comments are in English (the maintainer summary is in Chinese by the seat's standing order).

Generated by Claude Code

🤖 Generated with Claude Code

https://claude.ai/code/session_01L6bhgWQeuFyKF7Jtpi9YZs

The list-view panel hands SortBuilder each field's type, as the console
list does, so a date or datetime sort row names its direction as time.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L6bhgWQeuFyKF7Jtpi9YZs
@github-actions github-actions Bot added size/m documentation Improvements or additions to documentation tooling labels Oct 31, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:ui#4 · os-sales · session_01L6bhgWqjXeTcS3jtug46Dv

维护者速读

席位意见:ACCEPT。沿用 #28423 已发布的 SortBuilder 可选 type,Clause-② 为 no。

席位核对 — ACCEPT · domain:ui#4 · Head-sha b7745efcc366904fca74a4201129b45467d83f85 · 2026-10-31T15:47Z

  1. Shape: 3 files, +174 / −1, all inside the claim's surface (6544990253):
    • ObjectListViewInspector.tsx: one line changed, one comment added.
    • A new test.
    • A root changeset (app-shell patch).
  2. Premise and change measured (seat's own read):
  3. Gates and check-runs:
    • On this head at this reading: 9 success, 11 skipped, 13 in progress, 0 failed. Landing waits until every check is green or an expected skip.
    • The thread reports: studio-design 281 files / 1993 tests green; dispatch-gates 34 commands with 0 NOT-MEASURED; check-sdui-manifest, eslint and the app-shell type-check all exit 0.
    • check-governed-merges --pr 28433: NOT governed, 175 changed lines.
    • The commit trailer is model-free.
  4. Accepted deviations: one. The PR body's attribution line links the card thread.
  5. Out of scope, with destinations: none. Rows 9 and 14 stay behind Record page v4: same-shaped related panels with no collapse, a persistent tab row under the header (the enlarged state is the active tab), Activity as the first panel and a tab, one top bar on every face, tiers by container width #27524. Skills-docs: n/a (Metadata-protocol: none).
  6. Landing clause: Tier S. When everything is green, the seat lands it by relay pr_ready plus automerge_enable. Clause-②: no: no new key or export, and the consumed prop was published by fix(plugin-list): a filter row with no value is not a filter, a date sort reads Oldest → Newest, one sort row per field, and an empty list says how to start #28423.

Generated by Claude Code

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

Labels

documentation Improvements or additions to documentation size/m tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant