Skip to content

rest/meta: getViewsByObject / GET /meta/view?object= omits a runtime-authored view CONTAINER — #7163/#7736 expansion fix does not cover this path #13407

Description

@baozhoutao

A view authored at runtime and stored as an aggregated container (no top-level viewKind) is not returned by GET /api/v1/meta/view?object=<obj> / getViewsByObject, so a "live-in-app authored view" never reaches the object's consumer read door. This is the live recurrence of the closed #7163 ("the nested-plugin seam does not expand an aggregated views container … getViewsByObject() answers with the container alone") and #7736 ("the documented view-container authoring path is inert at runtime — the container is stored but never served") — the expansion fix does not cover a runtime-authored container's object derivation.

This is NOT an org-scoping defect (a sibling finding on the same item first read it that way; corrected on verify). The door IS org-aware: org-scoped views authored as expanded ViewItems ARE returned to their own org and hidden cross-org. The discriminator is container-vs-expanded, org-independent.

Reproduction (×2, verify-pass confirmed)

  1. As a signed-in user with an active org, PUT /api/v1/meta/view/<name> a view bound to object note. Tried both the aggregated-container shape and the canonical {list:{type,data:{provider:'object',object:'note'},columns}} shape; both land in pg as active rows.
  2. GET /api/v1/meta/view?object=note → the authored view is absent.
  3. Positive control: other views already stored as expanded ViewItems (top-level viewKind:"list") bound to note ARE returned — so the door works, the filter just requires viewKind.

Mechanism (source-confirmed)

  • The route filter (rest-server.ts:4404) and getViewsByObject (metadata-manager.ts:1592) both require v.viewKind.
  • getMetaItems explicitly drops aggregated containers (protocol.ts:6358).
  • #7163's hydrateExpandedViewItems (protocol.ts:12483) is meant to surface a container's expanded twin, but its object-derivation walks list.data.object → form.data.object → name and never the container's top-level object, so a runtime-authored org-scoped container yields no surfacing item.

Fix direction

Extend the expansion/hydration so a runtime-authored view container is surfaced by getViewsByObject with its object binding derived from the container's own object field (or reject the container shape at author time so the inert-write is loud rather than silent). Reconcile with #7163/#7736 to confirm which authoring paths the earlier fix was scoped to.

Discovered on a live multi-node EE deployment (records-forms/studio-authoring view-authoring items).

QA-source: #13404 · studio-authoring.view-authoring-live · consumer-read
QA-source: #13404 · records-forms.saved-view-management · getViewsByObject

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions