Uh oh!
There was an error while loading. Please reload this page.
fix(app-shell): Studio Access matrix — history opens in-place sheet, breadcrumb stops escaping the pillar - #2599
Merged
Merged
Conversation
The latest updates on your projects. Learn more about Vercel for GitHub. |
This was referenced Jul 16, 2026
…breadcrumb stops escaping the pillar The PermissionMatrixEditPage embedded in the Studio Access pillar (/studio/:packageId/access) reused the metadata-admin chrome verbatim, and two of its navigation targets don't exist under Studio's router: - The History button navigated to ./history, resolving to /studio/:packageId/access/history — no such route, so the app's catch-all dumped the user back on Home (verified in a live browser). - The PageShell breadcrumb linked to /metadata (also unrouted at top level), yanking the user out of Studio. Fix: an `embedded` switch on PageShell + PermissionMatrixEditPage (same pattern as MetadataResourceEditPage). Embedded, History opens a right-side sheet reusing the shared HistoryPanel (read-only: no rollback, which would write a live overlay behind the package draft/publish flow, ADR-0086 D6/D7), and the breadcrumb renders as plain text. Standalone metadata-admin behavior is unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
xuyushun441-sysforce-pushed
the
claude/sad-bell-452feb
branch
from
July 16, 2026 13:26
523a0d1 to
07c1185CompareContributor
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
Uh oh!
There was an error while loading. Please reload this page.
os-zhuang added a commit
that referenced
this pull request
Jul 18, 2026
…nt capabilities so the matrix hits the first screen (#2600 B1) (#2649) The Access pillar is called "Permission Matrix", but the editor opened with a name/label form plus the capability picker's option chips, pushing the matrix below the fold. Two low-frequency, high-chrome sections now start collapsed: - Identity (name/label) collapses to a one-line summary (label · provenance · default/read-only badges) and expands on click. The api-name already lives in the PageShell breadcrumb, so the summary carries the human label only. - System capabilities: a zero-grant WRITABLE set rendered every option as an outline chip, which read as already-owned. It now shows an explicit "none granted · add" affordance; granted sets and read-only sets keep the inline picker as before. Read-only packages, the dirty/guard contracts (#2588/#2606), the history sheet and breadcrumb (#2599) are all unaffected. Adds PermissionMatrixEditor.basics.test.tsx and updates the settle points of the existing matrix/guard suites (identity is now summary text, not an input). Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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 freeto 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.
Problem
The
PermissionMatrixEditPageembedded in the Studio Access pillar (/studio/:packageId/access) reuses the metadata-admin chrome (PageShell) verbatim, and two of its navigation targets don't exist under Studio's router:navigate('./history?type=permission')resolves to/studio/:packageId/access/history. No route matches (/studio/:packageId/:tabis single-segment), so the app's catch-all (<Route path="*">→/) dumps the user back on Home. Reproduced in a live browser (fresh showcase backend + console dev server): clicking 历史 in the Access pillar landed on the platform home page.元数据 › 权限集links to/metadata, which is also unrouted at top level (metadata admin lives under/apps/:appName/…), so it too falls into the catch-all and yanks the user out of Studio.Fix
An
embeddedswitch onPageShell+PermissionMatrixEditPage, following the existingMetadataResourceEditPage#embeddedprecedent; the StudioAccessPillarpassesembedded:HistoryPanel(same panel the generic edit page uses). Read-only — no rollback action, since under apackageIdthe set is package metadata whose truth moves via draft + atomic Publish (ADR-0086 D6/D7); a rollback would write a live overlay behind the draft flow's back. The breadcrumb renders as plain text (权限集 › <name>), no/metadatalinks.Verification
--freshshowcase backend :4473 + worktree console :5473, packagecom.test.historyrepro, setsales_perms):seq 1 · v1 · create by system), URL stays/studio/com.test.historyrepro/access.PermissionMatrixEditor.embedded.test.tsx, 4 cases): embedded opens sheet without navigating; embedded breadcrumb has no/metadatalinks; standalone still navigates to./history; standalone crumbs keep links.vitest runovermetadata-admin+studio-design: 103 files / 785 tests pass.pnpm --filter @object-ui/app-shell type-checkcurrently fails on pre-existing unrelated errors (useAiUsage.ts,RecordDetailView.tsx— stale siblingdisttypes in a fresh worktree; the exports exist in those packages'src). None of the four changed files produce type errors.🤖 Generated with Claude Code