Skip to content

fix(app-shell): draw the app no-access screen with the shared DataEmptyState - #26166

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-ztb3fw
Oct 26, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-ztb3fw

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Steve · project thread
Part of #25915

Clause-②: no (one block swaps its own markup for the shared components; no exported type change. If a shared component needs a new prop, the thread reports first and the seat amends this line)
Metadata-protocol: none

What

Slice 2 of #25915 (slice 1 was #26135). ui/packages/app-shell/src/console/AppNoAccessEmptyState.tsx, the screen an app's root shows when the app serves the caller no navigation or names only objects the caller may not read, now renders DataEmptyState instead of the bare Empty primitive. It is announced as role="status".

Unchanged: every i18n key and default value, the app-no-access-empty-state wrapper, the app-no-access-open-setup link (now the action), and data-reason, which moves from the description paragraph to the status node. DataEmptyState spreads extra props onto its root, so no prop was added to the shared component. The title takes the shared component's smaller size, which is the visual diff.

Why this block (measured on main 601c773)

Of the remaining app-shell blocks, this one hand-copied DataEmptyState's icon square class string verbatim (flex size-10 items-center justify-center rounded-lg bg-muted) around the Empty primitive, and carried no role. Its only importer is AppContent.tsx (two call sites, not edited); appServesNoNavigation.ts names it in a comment only. AppContent.tsx already imports DataEmptyState through PreviewDraftEmptyState since #26135, so the eager graph gains no module.

Not chosen for this slice: agentEmptyState returns title/description data, not a block; StudioEmptyState's sentence is a ReactNode where DataEmptyState.description is a string (would need a prop); PreviewEmptyState has a warn tone with no shared equivalent; InspectorEmptyState has 7 importers.

No claude/* branch on origin carries a different version of the file (depth-1 blob compare of 723 heads, 73 carry it, 0 differ). app-shell is outside the sdui registry closure, so scripts/sdui-manifest.record.json is not in the diff.

Tests

New ui/packages/app-shell/src/console/__tests__/AppNoAccessEmptyState.sharedState-25915.test.tsx: the screen is a role="status" node with data-slot="data-empty-state" inside the test-id wrapper; data-reason is on that node for both reasons; Open Setup is the action and links to the setup path.

  • Run at bd0b46a: the new file plus the unedited landing suites AppContent.emptyNavigationLanding-12079 and AppContent.noReadableObjectLanding-25338 (which reads data-reason through the wrapper): Test Files 3 passed (3), Tests 16 passed (16).
  • Ablation: with the fix committed and the source reverted to its main version, the new file reads Tests 4 failed (4); restored with git checkout HEAD --, git diff HEAD empty and blob hash equal to HEAD.
  • pnpm --filter @object-ui/app-shell type-check after building @object-ui/app-shell^...: both tsc --noEmit and tsc -p tsconfig.test.json, exit 0.

Acceptance notes


Generated by Claude Code

🤖 Generated with Claude Code

https://claude.ai/code/session_01FdXMkfnYedDKghz7QLUkx8

…tyState

AppNoAccessEmptyState composed the bare Empty primitive around a hand-copy
of DataEmptyState's icon square, so the screen carried no role. It now is
DataEmptyState (role="status"); text, Open Setup link, test ids and
data-reason (now on the status node) are unchanged.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FdXMkfnYedDKghz7QLUkx8
@github-actions github-actions Bot added size/m documentation Improvements or additions to documentation tooling labels Oct 26, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · ACCEPT · seat domain:ui#1 · 2026-10-26T14:47Z

Head bd0b46a6 (read from the PR object).

  • Shape. Draft on main. Part of #25915 (slice 2). Clause-②: no. Metadata-protocol: none. The root changeset .changeset/25915-app-no-access-shared-state.md is a patch for @object-ui/app-shell. The files match claim 6418235759: the surface, its new test and the changeset.
  • Checks pinned to the head. All check runs completed, with 0 failing and 0 pending. The seat's landing script verifies this before posting.
  • Governed surface. check-governed-merges.mjs --pr 26166 reports it NOT governed. git merge-tree against current main is clean.
  • Diff read.
    • AppNoAccessEmptyState now renders DataEmptyState (role="status") in place of Empty plus a hand-copied icon square.
    • data-reason moves onto the status root through DataEmptyState's ...props spread, so no new prop is needed and Clause-②: no holds. The AppContent.noReadableObjectLanding-25338 lookup querySelector('[data-reason]') still finds it.
    • The title, the four description variants, the Open Setup link with its test id, and the outer app-no-access-empty-state wrapper are unchanged.
    • The single importer, AppContent.tsx, is not edited.
  • Tests. The new file pins the status role and data-reason on both reasons, plus the Setup link. The dev reports an ablation (4/4 red on reverted source) and the 12079 and 25338 suites passing unedited.
  • Serial constraints. app-shell is outside the sdui registry closure, so no record file moves. The ⛔ paths are untouched.

Landing: ready + auto-merge through the relay.

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 26, 2026 14:48
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 26, 2026
Merged via the queue into main with commit fbb7599 Oct 26, 2026
55 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-ztb3fw branch October 26, 2026 15:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/m tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants