Skip to content

fix: portal ProcessesTab's fullscreen log overlay out of glass-theme cards - #4262

Merged
atomantic merged 1 commit into
mainfrom
claim/issue-4152
Aug 15, 2026
Merged

fix: portal ProcessesTab's fullscreen log overlay out of glass-theme cards#4262
atomantic merged 1 commit into
mainfrom
claim/issue-4152

Conversation

@atomantic

Copy link
Copy Markdown
Owner

Summary

On "glass" themes the index.css rule that gives every bordered/rounded .bg-port-card a backdrop-filter also makes that card the containing block for position:fixed descendants. ProcessesTab renders its fullscreen log view as a hand-rolled fixed inset-0 overlay inline in the app-detail / processes-page tab tree, so opening it from inside a themed card sized the overlay to the card instead of the viewport.

Render the overlay through createPortal to document.body — the same escape GalleryImagePicker and FolderPicker get via <ui/Modal>'s usePortal, and the same fix MediaLightbox took in #4151. The overlay uses bg-port-bg (not a bg-black/N scrim), so it never tripped — and still doesn't trip — the a11yConventions hand-rolled-backdrop guard.

Closes #4152

Test plan

  • cd client && npm test -- src/components/apps/tabs/ProcessesTab.test.jsx — 2 passed. New case asserts the fullscreen overlay renders outside the component's own container, directly under <body>, and is torn down on exit.
  • Bypass probe: temporarily reverting the createPortal wrapper fails the new test (it is a real guard, not a vacuous one); restored and re-verified green.
  • cd client && npm test -- src/a11yConventions.test.js src/components/apps — 13 files / 136 tests passed.

…cards (#4152)

On "glass" themes the index.css rule that gives every bordered/rounded
.bg-port-card a backdrop-filter also makes that card the containing block
for position:fixed descendants. ProcessesTab renders its fullscreen log
view as a hand-rolled `fixed inset-0` overlay inline in the app-detail /
processes-page tab tree, so opening it from inside a themed card sized
the overlay to the card instead of the viewport.

Render it through createPortal to document.body — the same escape
GalleryImagePicker and FolderPicker get via Modal's usePortal, and the
same fix MediaLightbox took in #4151.
@atomantic
atomantic merged commit 218a6ba into main Aug 15, 2026
7 checks passed
@atomantic
atomantic deleted the claim/issue-4152 branch August 15, 2026 04:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Portal ProcessesTab's fullscreen log modal (glass-theme trap)

1 participant