Uh oh!
There was an error while loading. Please reload this page.
fix(approvals): surface the admin override for a stuck request in the inbox (#3424) - #2810
Merged
Merged
Conversation
… inbox (#3424) Backend #3424 lets a platform/tenant admin act on a pending approval routed to an unstaffed position (otherwise undecidable, locking the record forever) via a new server-computed `viewer.can_override`. Mirror it in the console so the recovery path is visible in-product: - Add `can_override` to the `viewer` type (optional — an older backend without it reads as false). - `canApproveReject` ORs in `viewer.can_override`, so the reply box shows and the "why disabled" hint no longer contradicts the approve/reject/reassign buttons (which the backend's declared-action `visible` CEL already ORs `can_override` into). Normal approver/submitter gating is unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VmQPXXbgomoqrXtoxr3CS2
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
os-zhuang
marked this pull request as ready for review
July 24, 2026 15:08
Uh oh!
There was an error while loading. Please reload this page.
os-zhuang pushed a commit
that referenced
this pull request
Jul 24, 2026
…tui#2807) The drawer's 'waiting on' chips now key their collapse by (name, group) using the framework's pending_approver_groups: the same person filling two groups stays two labeled chips (Dev Admin · finance / · legal), one group filled twice collapses to a single chip with a count. Group renders as a muted · <group> sub-tag. Degrades to plain dedupe + count when no group data present. Rebased onto latest main (resolves overlap with the #2810 admin-override change in the same file). Closes objectui#2807 (UI half) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Cu48mLFUdRBmMh8Z8R3CVz
os-zhuang added a commit
that referenced
this pull request
Jul 24, 2026
…tui#2807) (#2811) The drawer's 'waiting on' chips now key their collapse by (name, group) using the framework's pending_approver_groups: the same person filling two groups stays two labeled chips (Dev Admin · finance / · legal), one group filled twice collapses to a single chip with a count. Group renders as a muted · <group> sub-tag. Degrades to plain dedupe + count when no group data present. Rebased onto latest main (resolves overlap with the #2810 admin-override change in the same file). Closes objectui#2807 (UI half) Claude-Session: https://claude.ai/code/session_01Cu48mLFUdRBmMh8Z8R3CVz Co-authored-by: Claude <noreply@anthropic.com>
akarma-synetal pushed a commit
to akarma-synetal/objectui
that referenced
this pull request
Jul 25, 2026
…tui#2807) (objectstack-ai#2811) The drawer's 'waiting on' chips now key their collapse by (name, group) using the framework's pending_approver_groups: the same person filling two groups stays two labeled chips (Dev Admin · finance / · legal), one group filled twice collapses to a single chip with a count. Group renders as a muted · <group> sub-tag. Degrades to plain dedupe + count when no group data present. Rebased onto latest main (resolves overlap with the objectstack-ai#2810 admin-override change in the same file). Closes objectui#2807 (UI half) Claude-Session: https://claude.ai/code/session_01Cu48mLFUdRBmMh8Z8R3CVz Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Console companion to objectstack#3451 (framework#3424). The framework lets a platform/tenant admin act on a pending approval routed to an unstaffed position — otherwise undecidable, locking the record forever — via a new server-computed
viewer.can_override. Theapprove/reject/reassigndeclared actions already ORcan_overrideinto theirvisibleCEL server-side, so the drawer's action buttons show for an admin with no console change. This PR keeps the surrounding inbox affordances consistent.What changed
services/approvalsApi.ts— addcan_override?: booleanto theviewertype (optional, so a response from an older backend reads asfalse).pages/system/ApprovalsInboxPage.tsx—canApproveRejectORs inviewer.can_override, so the reply box shows for an admin and the "why disabled" hint no longer contradicts the now-visible approve/reject/reassign buttons. Normal approver/submitter gating and the retired "act as" composer are untouched.Testing
The change is a type addition plus a boolean OR. Bare
tscin the app can't resolve@object-ui/*without a full workspace build (pre-existing in this environment), but the two edited files introduce no new type errors, and the console'svisible-CEL evaluator already fails closed on a missing key with||short-circuit, so there's no regression for normal approvers.🤖 Generated with Claude Code
https://claude.ai/code/session_01VmQPXXbgomoqrXtoxr3CS2
Generated by Claude Code