Uh oh!
There was an error while loading. Please reload this page.
fix(approvals): Approval Center UX pass — badge nowrap, approve confirm, progress bar, localized declared actions (#2762) - #2789
Conversation
…rm, progress bar, localized declared actions (#2762) - Badge: whitespace-nowrap in base variants so CJK status labels (待审批) never stack vertically; min-width on the inbox 状态 column (P0-1) - Inbox: quick Approve (row ✓ / mobile card / 'a' key) now routes through a confirmation dialog, mirroring Reject — no irreversible decision on a stray click (P0-2) - Drawer: segmented decision-progress bar with per-group ✓/○ chips and an eligible-approver count; pager reads "Request N of M" so it can't be misread as approval progress (P1-1) - DeclaredActionsBar: label/confirmText/successMessage resolve through the _actions.<name>.* translation convention with metadata literals as fallback (P0-3); new approvalsInbox keys in all ten locales Refs objectui#2762 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Cu48mLFUdRBmMh8Z8R3CVz
The latest updates on your projects. Learn more about Vercel for GitHub. |
os-zhuang
commented
Jul 22, 2026
CI status: every job in this PR's check suites (and the re-run I triggered) fails 2 seconds after creation with Generated by Claude Code |
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
os-zhuang
commented
Jul 24, 2026
✅ CI is green. Runners recovered at ~11:20 UTC Jul 24; the re-run (attempt 17) passed everything: 4/4 test shards, Build & E2E, Dev-server fixture build, Build Docs, Changeset Fixed Group Check, Auto Label, and Bundle Analysis (main entry 28 KB gzip vs 350 KB budget). Ready for review. Generated by Claude Code |
Uh oh!
There was an error while loading. Please reload this page.
Summary
Implements the four items called out in #2762's title — 徽章竖排 (P0-1), 决策确认 (P0-2), 进度可视化 (P1-1), 动作标签 i18n (P0-3, UI side).
Badgecomponent: nowhite-spaceconstraint, so CJK labels (待审批) break per-character in a cramped cell.Badgenow carrieswhitespace-nowrapin its base variants (a badge is a single-line pill by definition), and the inbox 状态 column getsmin-w-[96px]+ a nowrap header.akeyboard shortcut now route through a shared confirmation dialog before executing, exactly like the Reject flow already did. The dialog points users at the drawer when they want to attach a comment/file. Keyboardaalso gains the sameisActionablegaterhad.decision_progressblock now renders a segmented progress bar (ARIAprogressbar; degrades to a continuous fill above 12 segments), per-group chips show an explicit ○ unsatisfied state next to the ✓ satisfied one, the eligible-approver count is spelled out next to the got/need header ("0 of 1 · 2 eligible approver(s)"), and the drawer pager now reads "Request N of M" so it can no longer be confused with approval progress.DeclaredActionsBarresolveslabel/confirmText/successMessagethrough the_actions.<name>.*translation convention with the metadata literals as fallback, mirroring what ObjectView/RecordDetailView already do; the localized copies also ride the dispatch so the param-dialog title, confirm prompt and success toast localize too. Param labels already localize downstream inuseConsoleActionRuntime. The translations themselves ship framework-side in@objectstack/plugin-approvals(companion PR in objectstack).approvalsInboxkeys (approveOneTitle/Body,progressApprovals/Groups/Eligible/Bar,declaredActions,attachmentChip, rewordedpositionOf) added to all ten locales.Verification
turbo buildgreen for@object-ui/components,@object-ui/i18n,@object-ui/app-shell,@object-ui/consoleDeclaredActionsBar.test.tsx7/7 ·packages/i18nsuites 113/113eslinton the touched files: no new errors (the 9 pre-existingreact-hookserrors onApprovalsInboxPageare unchanged on main)components,app-shell,i18n)Refs #2762 (fixes P0-1, P0-2, P1-1 and the UI half of P0-3)
🤖 Generated with Claude Code
https://claude.ai/code/session_01Cu48mLFUdRBmMh8Z8R3CVz
Generated by Claude Code