Repository navigation
fix(app-shell): label the approval decision panel's record summary "As submitted" (#27502) - #27635
Conversation
… the submitted values (#27502) Claude-Session: https://claude.ai/code/session_01Utp6CaRUZ2GQ5mSm8Z7Aqd Co-authored-by: Claude <noreply@anthropic.com>
…nding, empty and ten-pack cases (#27502) Claude-Session: https://claude.ai/code/session_01Utp6CaRUZ2GQ5mSm8Z7Aqd Co-authored-by: Claude <noreply@anthropic.com>
…and its changeset (#27502) Claude-Session: https://claude.ai/code/session_01Utp6CaRUZ2GQ5mSm8Z7Aqd Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Utp6CaRUZ2GQ5mSm8Z7Aqd Co-authored-by: Claude <noreply@anthropic.com>
|
domain:ui#4 · os-bill · session_01Utp6CbDAucNyQ4UtzCJKyh |
|
domain:ui#4 · os-bill · session_01Utp6CbDAucNyQ4UtzCJKyh Contract reviewServed-tier: Face: declaration only ( ① Derived judgments
② Semver level
③ Boundary flags
Implemented-by: VERDICT: PASS Generated by Claude Code |
|
domain:ui#4 · os-bill · session_01Utp6CbDAucNyQ4UtzCJKyh 席位核对ACCEPT · head
Generated by Claude Code |
Requested by Bill · project thread
维护者速读
RecordSnapshotSummary.tsx(section 与标题)、ApprovalDecisionPanel.decidedSnapshot-27502.test.tsx、i18n/src/locales/zh.ts新键。pnpm --dir ui exec vitest run packages/app-shell/src/views/approval-decision/,预期 6 个文件 57 个测试全绿。Fixes #27502
Clause-②: no
Metadata-protocol: none
What changes
RecordSnapshotSummary, the decision panel's summary of the request's record snapshot, is now asectionwhose heading reads the new pack rowapprovalsInbox.snapshotAsSubmitted("As submitted", zh "提交时的内容") in the muted label style of the panel's "Waiting on"; the heading is the section's accessible name (aria-labelledby). It is drawn only when the summary draws content, and at any request status: it names the source, not a status.payload/payload_displayand the target object's definition) and the redaction are unchanged. No record is read; the record's current values stay on the Details tab'srecord_idpointer card.@object-ui/i18npacks (en, ar, de, es, fr, ja, ko, pt, ru, zh).RecordSnapshotSummary.tsxandApprovalDecisionPanel.tsx(part 1) say the panel draws the submitted snapshot (objectstack#10749) and why it is labelled; the app-shell README's panel section says the same. One patch changeset for@object-ui/app-shelland@object-ui/i18n.Why
The served
sys_approval_request_detailpage draws two faces that read two different rows:record:highlightsstrip reads the REQUEST row (process_label,status,current_step_label,submitter_id,updated_at), so after a decision it reads "Status Approved";request.payload, the target record as SUBMITTED, kept at rest as the request's evidence of what was submitted and served redacted per reader (objectstack#10749, ruling record 5377367175, Option B). It keeps "Status Submitted" and "Approved 0.00".Unlabelled, the snapshot read as the record's current state beside the request's status. The fork between a live read of the target and the labelled snapshot was ruled B (ruling record 6499914328 on this card): keep the snapshot, label it as the submitted values.
Tests
ApprovalDecisionPanel.decidedSnapshot-27502.test.tsx, four pins over the served row shape:status: 'approved', the snapshot's ownstatus: 'submitted'under a declaredselectfield): the summary is the region the pack row names, its status row readsSubmitted, and nobody is waited on;Ablation (one-shot, not kept)
Fix committed first.
node scripts/ablation-replace.mjsdeleted the heading's copy expression inRecordSnapshotSummary.tsx(anchor x1 -> x0, blobc05edc2b->8ff34b0a): the decided and pending pins turned red, the control and the ten-pack pin stayed green (2 failed, 2 passed). Restored: blob after restore equals HEADc05edc2b,git diff HEADempty. The subject resolves from source (relative import;@object-ui/i18nis aliased tosrcinui/vitest.config.mts), so nodistleg applies.Verification
Local runs at eda86be (merge base 492703e)
pnpm --dir ui exec vitest run packages/app-shell/src/views/approval-decision/: 6 files, 57 tests passed.packages/i18n/plus the console'sapprovalRequestsDataSource.servedPageSummary-12483andservedPageSummaryAmount-12534: 92 files, 1403 passed, 13 skipped.pnpm --filter @object-ui/app-shell run type-checkexit 0;pnpm --filter @object-ui/i18n run type-checkexit 0.node scripts/pm/dispatch-gates.mjs --commandsderived 34 commands; all 34 ran with exit 0, includingnode scripts/check-sdui-manifest.mjsandpnpm --dir ui exec vitest run scripts/;--ranreconciliation: 34 derived, 34 run, 0 NOT-MEASURED, 0 UNRUN. Alsopnpm check:changeset-fixedexit 0.pnpm check:new-line-citations(ui) 0 new citations.pnpm lint(repo-wide), the UI test shards,Type Check UI/ workspace type-check lanes,Build & E2E UI,Live E2E UI.Acceptance notes
PendingApproversdraws each chip's slot count fromapproverChips(one person holding three quorum slots is one chip "x3"), while the progress line counts distinct people (eligibleApproverCount, objectui#12781). Different read, untouched here; class: a (user-visible copy with no explanation of the count) · reach: this card's own walkthrough (QA-source [sweep] v18.3.0 release test sweep #27377 track 1) on the served request page · dedupe words: approver chip count, quorum slots, eligible approver, x3. The seat files it separately.snapshotSummaryPlan.ts; this PR does not touch that file.Human Minimum
packages/specholds no runtime logic. (not touched)pnpm lintpasses. (touched files linted locally; repo-wide run is CI's)main, one pull request.packages/spectouched: its generated artifacts are regenerated and committed. (not touched)content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.Implemented in session
session_01Utp6CaRUZ2GQ5mSm8Z7Aqd(domain:ui#4card thread, claim 6499632812).🤖 Generated with Claude Code
https://claude.ai/code/session_01Utp6CaRUZ2GQ5mSm8Z7Aqd
Generated by Claude Code