feat(adr-0045): hidden-app visibility gate + publish unhides materialized builds#1768
Merged
Merged
Conversation
…ized builds v1 framework slice of ADR-0045 (additive materialization): - rest-server filterAppForUser: hidden:true apps are dropped for users without studio.access/setup.access — the server-side visibility gate (the launcher's client filter is a listing courtesy, this is the law) - publish-drafts: after promoting drafts (and seeds), unhide every hidden app bound to the package — ONE publish verb serves both the draft and the materialize regimes; callers never need to know how a package was built. Best-effort with explicit unhideError reporting. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
v1 framework slice of ADR-0045 (additive materialization with a visibility gate):
filterAppForUserhidden-app gate (rest-server): apps withhidden: trueare dropped from metadata responses for users withoutstudio.access/setup.access. The launcher's client-side hidden filter is a listing courtesy — this is the enforced gate that makes an unpublished app externally unobservable.publish-draftsflips visibility (http-dispatcher): after promoting the package's drafts (and applying seeds), anyhidden: trueapp bound to the package is re-saved withhidden: false. One publish verb serves both regimes — the caller (chat auto-publish, banner button, Home pending-drafts) never needs to know whether the package was draft-staged or materialized. Best-effort: flip failures surface asunhideErrorwithout failing the publish.Tests
filterAppForUsercases (drop for non-builders, allow for studio/setup, visible apps untouched, requiredPermissions still compose) —rest.test.ts101/101 ✅publish-draftscases (unhides exactly the hidden app with body intact + reports flip failure non-fatally) —http-dispatcher.test.ts121/121 ✅Next (separate PRs)
cloud:
apply_blueprintlint-then-materialize cutover (stage → publishPackageDrafts in-turn, app bodyhidden:true). objectui: canvas → real app URL + unpublished banner.🤖 Generated with Claude Code