Skip to content

objectui: the Unpublished banner and per-app publish read _unpublished; the App Switcher keeps filtering on hidden (#4829 A1 objectui half) #6955

Description

@os-zhuang

Blocked-by: #4829

Part of #4829 (maintainer ruling A1). Filed by the domain:spec seat at ACCEPT time from PR #6942's measured mandatory-answer contract; routing label left to the triage seat (lands in objectstack-ai/objectui).

The contract, verbatim from the framework half

After PR #6942, app.hidden means navigation presentation only ("Hidden apps stay fully routable and permission-checked") and the ADR-0045 publish gate lives on the machine-managed _unpublished key.

SurfaceBeforeAfter
Unpublished bannerapp.hidden === trueapp._unpublished === true
Publish buttonPOST /packages/:id/publish-draftsunchanged — the flip now clears _unpublished server-side
Direct per-app publishPUT /meta/app/{name} body {"hidden": false}PUT /meta/app/{name} body {"_unpublished": false}
App Switcher / launcherfilters on hiddenkeeps filtering on hidden — which now means only what it says. ⛔ Must NOT filter on _unpublished: the server already withholds those apps

Wire fields unhiddenApps / unhideError in the publish-drafts response are deliberately unchanged by PR #6942 — renaming a contract the framework repo cannot verify would be the same class of silent break that card exists to fix. Rename them in lockstep with this card, or not at all; state which in the PR.

Sequencing

The framework half is an ADR PR reserved for maintainer hand-merge (AGENTS.md PD #14). Land this after it merges and after objectui's @objectstack/spec pin advances past that release — before the pin bump, _unpublished does not exist in objectui's types.

Note for whoever prices this: the account-app 404 that #4829 fixes is server-side and needs no objectui change; this card is only about the publish-state UI reading the right key.

Refs: #4829 (ruling chain), PR #6942 (framework half), #6954 (cloud half), ADR-0045.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions