Skip to content

[approvals] The "withdraw approval" button renders for non-submitters on a pending record — a lit button whose click always fails #6464

Description

@os-trump

UI half of objectstack#11993 (split at triage 2026-08-26; the server-side refusal-message i18n half stays there under domain:services). Source: maintainer-side field report on @objectstack/*@17.2.0, Console, a record_change approval flow (4-level position approval on a custom object).

Behaviour

  1. User A submits a record into approval (approval_status=pending).
  2. User B — NOT the submitter, has read access, not an admin — opens the record detail page.
  3. The approval area / page header still shows the withdraw-approval button. Clicking it changes nothing (the server correctly refuses) and surfaces a mixed-language error: a Chinese prefix concatenated with the raw English server text "No pending approval request found for this record".

This card's scope (UI only)

Withdraw semantically belongs to the submitter (or the platform's established admin-rescue posture — the reporter explicitly ruled out the admin case, cf. objectstack#9464). A non-submitter should not see a clickable withdraw entry: "a lit button whose click must fail" is the same writability-feedback-mismatch family as #3794. Hide (or disable with reason) based on the submitter identity the record/approval row already carries.

The refusal-message translation (server emitting untranslated English through the i18n seam) is NOT this card — it stays on objectstack#11993.

Reporter notes the state is never corrupted — pure feedback-layer defect. Screenshots available on request from the reporter (private app repo).

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:dispatched

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions