Skip to content

[feature] Give runtime-published custom pages an end-user entry point: a page view type on objects, or nav registration at publish time #13216

Description

@yinlianghui

⚠️ Feature proposal awaiting maintainer review — NOT ready for development. Do not self-assign or start implementation; this needs a human product decision first (API surface + scope). Filed per the maintainer's direction from the demo lane; labeled needs-user-decision to keep it out of automated dispatch.

Problem

A custom React page created and published at runtime through the metadata API has no in-protocol way to reach end users (full evidence map in #13100):

  • App navigation is closed: app.allowOrgOverride=false, and the flagship apps' navigation lives in code packages (src/apps/*.app.ts), so neither runtime create-over nor overlay can add a menu entry. The refusal's sanctioned path is "edit the source artifact and redeploy".
  • Object views have no shape for it: view is one of only 5 types with allowOrgOverride=true (the door is open), but its type enum is closed over declarative renderers (grid | kanban | gallery | calendar | timeline | gantt | map | chart | tree) — a published page cannot be mounted as an object list view/tab. page.object binds record detail pages only.
  • The escape hatch is out of scope: OS_METADATA_WRITABLE unlocks the type, never a package's writability, is documented as an emergency-fix mechanism, and org-scoped overlays written through it do not survive boot by design.
  • Published pages are also absent from command-palette search ([finding] Page published via metadata API is unreachable for end users: no navigation entry, absent from command palette search #13100).

Net effect: "an agent (or Studio author) grows a page into a running app" ends with an artifact only a direct URL can reach.

Proposed directions (either would close the gap; choice needs a product call)

  1. page member in the view type enum — let an object list view/tab mount a published page (fits the "this is another way to look at this object's data" case; view already allows runtime create + org overlay).
  2. Nav registration in the page publish flow — publishing a page may declare/offer a navigation entry for a target app (the navigation item shape {id, type:'page', pageName, label, icon} already exists), with whatever authorization gate the platform deems right for code-package apps.
  3. (Smaller, complementary) index published pages in command-palette search.

Context

Discovered producing a promo demo where an AI agent builds a dashboard page into HotCRM from one request: the page publishes and renders perfectly, but no end user could find it. Evidence trail with API receipts and schema citations: #13100.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions