Repository navigation
refactor(desktop): draw the issue page on @luke/ui's DetailPage - #3642
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
luke-agent Bot
added a commit
that referenced
this pull request
Oct 18, 2026
Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
luke-agent
Bot
force-pushed
the
luke/issues-detail-page-shell
branch
from
October 18, 2026 17:11
e95c3cc to
70a1397
Compare
luke-agent
Bot
force-pushed
the
luke/issues-detail-page-shell
branch
from
October 18, 2026 17:26
70a1397 to
3ddf9ba
Compare
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Oct 18, 2026
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Oct 18, 2026
The issue page and its unread frame stand on DetailPage under the window's toolbar instead of borrowing the Automations page's view and scroll. The document inside keeps the plan's type, the editor's accent, and the plan's room for its last line to scroll clear of the floating captions. DetailPage stands a lone EmptyState or centred ErrorState a little above the room's middle, as CollectionPage does. Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
luke-agent
Bot
force-pushed
the
luke/issues-detail-page-shell
branch
from
October 18, 2026 18:16
3ddf9ba to
a97f80a
Compare
14 tasks done
14 tasks done
This branch was successfully deployed
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.
Item "Adopt
@luke/uipage shells" of the Improve Issues board plan: put the Issues pages on the shared page components.What was already on
mainMost of this item had already landed:
CollectionPage(PAGE_FRAME.TOOLBAR,PAGE_WIDTH.FULLfor the board), along withEmptyState("No issues yet") andErrorState..issue-board-scroll. The board stands full-height inside the shell, which allows that (flex: 1 1 0content underPAGE_WIDTH.FULL). Its sideways scroll, per-column scrolls, column +, card drag and card menu are unchanged.ListRow.This PR covers what was left: the issue page.
What this PR changes
issue-detail.tsx:IssueDetailnow usesDetailPagewithframe={PAGE_FRAME.TOOLBAR}, named by the issue's identifier. The existing toolbar (crumbs, Experimental, ⋯) is passed in astoolbar. It no longer usesautomations-view/automations-scroll. The document inside keeps the plan's type:.desktop-document > .plan-body, 15px/1.65 and the h1 title. The archiveConfirmDialogsits beside the page; it portals either way.issues-page.tsx:DetailFrame(the issue while it is read, or why it could not be) now uses the sameDetailPage. The page's localDetailPagecomponent is renamedIssuePageso it doesn't clash with the import.issues.css: a new.issue-documentkeeps two things the plan's.plan-document-scrollused to supply:--accent, so the description editor's caret and ring keep the plan's colour.IssueDetailSkeleton(from fix(desktop): draw the Issues board and an issue's page in blocks while they read #3632, which landed while this was open): it now stands inside the sameDetailPagerather than wrapping its own.plan-document-scroll, so the blocks open where the issue will land.@luke/uiDetailPage: a main column holding only anEmptyState(or a centredErrorState) now fills the column. The state sits a little above the middle, as it does onCollectionPage. Without this, "This issue is gone…" would jump to the top of the page. This is CSS only, scoped with:has(> .luke-empty-state:only-child), and it covers the narrow single-scroll layout too.No
automations-*class is left in the Issues files. Nothing inissues.cssbecame redundant: it never styled the old frame.Shared component change
DetailPageis shared (@charleslpan's).detail-page.cssgains one scoped rule:EmptyState(a centredErrorStateis one), the column and its content become flex columns. The state then fills the column and stands a little above the middle, asCollectionPage's notice does.:has(> .luke-detail-page-content > .luke-empty-state:only-child), so a column holding anything else lays out as before.The web admin's callers (
AdminPageinpage-header.tsx: the dashboard, a day, an account, animations) are unaffected. None of them puts a loneEmptyStatein aDetailPage.AdminErrorCardstands its centredErrorStateoutside anyDetailPage, and the refresh failure is an inlineErrorStateinside aStackbeside the dimmed content.Visible changes (agreed with the orchestrator, following #3559's contract cleanups)
On the issue page only:
Also: the content column now sits inside the column's own
scrollbar-gutter. Where a scrollbar takes room, the 720px measure loses the scrollbar's width (10px in the Linux harness). With macOS overlay scrollbars it takes none.The board and the list are pixel-identical before and after.
Tests
Every test in
issues-page.test.tspasses with no assertion changed, and no assertion named a class the shell renamed.detail-page.test.tsandnew-issue-dialog.test.tspass. No new test: this changes no behaviour, and the centring and the room are CSS that jsdom can't lay out. The screenshots are the evidence.pnpm check:affectedpasses: lint, knip, typecheck, tests and build. In this sandbox,discarded-effectand the test task were run one at a time because of memory limits.Screenshots
These come from a throwaway, uncommitted jsdom test that rendered the real pages with synthetic issues. Headless Chromium then painted them at 1280×800 in
.desktop-shell > main.desktop-main, with the sidebar collapsed, using the desktop stylesheet built frommain(before) and from this branch (after). This is the same method as #3559.Not done
desktop-shell.tsx'sIssuesLoading, the empty frame shown while the Issues chunk loads, still renders an empty<section className="automations-view">. It draws nothing, and it is shared in shape withAutomationsLoading, so I left it alone.Made with Luke
Summary by cubic
Draws the issue page and its unread frame on
@luke/ui'sDetailPageunder the window's toolbar, instead of borrowing the Automations page's view and scroll. The document inside keeps the plan's type and the editor's accent, and keeps the plan's bottom room so the last line scrolls clear of the floating captions.DetailPagenow stands a lone empty or failed state a little above the room's middle, asCollectionPagedoes.Visible changes, on the issue page only:
Written for commit a97f80a. Summary will update on new commits.