Skip to content

RecordDetailView carries a second copy of the param dialog's dead action?.title fallback #5610

Description

@os-sales

Found while implementing #4282 (deleting the same limb from useConsoleActionRuntime). Observation-class: dormant, nothing a user hits today. Filed rather than fixed — that card's file fence was packages/app-shell/src/hooks/**, and another PR in the same round was touching packages/app-shell/src/views/.

The read

packages/app-shell/src/views/RecordDetailView.tsx:539, titling the param-collection dialog:

setParamState({open: true,params: localized,// Title the dialog as the action rather than the generic "Action parameters".title: action?.label||action?.title,description: actionDescription(objForI18n,action?.name,action?.description),
resolve,});

This is a near-identical second paramCollectionHandler — same shape, same action?: any parameter (:500), same dead right-hand side — living alongside the one #4282 fixed. RecordDetailView builds its own runtime rather than routing through useConsoleActionRuntime, so the two handlers have drifted as a pair for a while; #4282's comment about the localization mirroring says as much ("mirrors useConsoleActionRuntime").

The reachability argument, re-measured for this site

Identical to #4282's, because it is the same key on the same surface. Re-verified on origin/main @ 7a28e1e3f, every zero paired with a control probe:

  • not in @objectstack/spec's ActionSchema — walked live against the installed @objectstack/spec@17.0.0 with the pin test's own zod-internals walk: 44 keys, title absent, controls description and label both present;
  • not in @object-ui/core's ACTION_DEF_KEYS / SPEC_ACTION_KEYS (0 entries; controls description 2, label 2) nor as a field on the ActionDef interface;
  • not on @object-ui/types' ui-action.ts (1 hit, prose only — titleFormat in a doc comment at :273);
  • not on crud.ts's ActionSchema (2 hits, both non-action: retired-confirm prose at :136, and the nested dialog.title at :163) nor inherited from BaseSchemabase.ts's only title field at :599 belongs to HTMLAttributes;
  • forwarded by none of the four action renderersaction:button, action:icon, action:group, action:menu each carry exactly one or two title hits and all of them are prose in comments.

A repo-wide sweep for reads of the key found exactly two live ones, this and the one #4282 removed:

packages/app-shell/src/hooks/useConsoleActionRuntime.tsx:259 (removed by #4282)
packages/app-shell/src/views/RecordDetailView.tsx:539 (this one)
packages/components/src/renderers/action/action-menu.tsx:223 prose
packages/components/src/renderers/action/__tests__/action-forward-parity.test.tsx:21 prose

Suggested disposition

Mirror #4282 exactly: delete || action?.title, leaving title: action?.label, and extend the pin. useConsoleActionRuntime.paramDialogTitle.test.tsx (added by #4282) is the template — it pins the reader rather than the deletion, because the action parameter here is any too, so nothing in the compiler stops the alias coming back.

Once this lands, the two prose mentions above go stale and can be refreshed in the same PR — action-forward-parity.test.tsx's header quotes the expression verbatim and cites useConsoleActionRuntime.tsx:205-207 (already stale line numbers today).

Second half, blocked

Narrowing this handler's action?: any to ActionDef hits the same wall #4282 measured — overrideNotice is read off the action but declared nowhere. That is filed separately; this issue's first half does not depend on it.

Refs #4282, #4046, #4192.

Metadata

Metadata

Assignees

Labels

domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:dispatched

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions