Repository navigation
Render real document context and control states in the audit's content and controls plates - #633
Merged
Merged
Conversation
MaggieAppleton
force-pushed
the
audit-split-plates
branch
from
October 15, 2026 10:17
6bc3284 to
4585d35
Compare
MaggieAppleton
force-pushed
the
audit-content-controls
branch
from
October 15, 2026 10:26
a66e844 to
f1e6583
Compare
MaggieAppleton
force-pushed
the
audit-content-controls
branch
4 times, most recently
from
October 15, 2026 11:29
6171eb1 to
ce6401a
Compare
StaticPlanEditor takes a className instead of hard-coding the audit's. The audit drops its padding, height, width and max-height overrides and renders each specimen on the real paper and measure. Research shows the composer inside its live draft shell. The table plate's hand-built toolbar and selected table are replaced by TableActionToolbarView, a pure extraction of the phone dock's markup from TableActionToolbar. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Buttons, icon buttons, links and fields now render the app's own rules in each state. theme.css gains a data-force-state seam inside each button variant's hover and press selectors and the global focus ring, and navigation.css lets IconButton's hover fill answer it; nothing in the app sets the attribute. The audit's copied state rules are gone. Icon buttons render IconButton in its tones and sizes. A new link utility (brand ink, underline on hover) replaces the invented audit link and the two identical ad hoc treatments in repository-picker and build-view. Fields lose their padding and font overrides and use the live field classes; the unused Select leaves the plate, and the adoption plate now says no shared control is adopted. Errors pass text-destructive-ink as production does and render the real NavigationError for the recoverable case. Foundations drop the presentation table's forced min-width and the invented icon states, showing the real default and danger icon roles instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Renews the reviewed source hashes for: - apps/web/src/design-audit/foundations.tsx: type-scale labels lose their middle dots and the narrow table example is renamed. The dynamic var() names still come from the same finite token lists. - apps/web/src/design-audit/icons.tsx: the icon state row shows the real default and danger roles. Glyph classes still come from NUCLEO_ICONS. - apps/web/src/design-audit/controls.tsx: ButtonRow still combines btn btn-md with static tier classes from its callers; the other plates pass only static classes and literal IconButton recipes. - apps/web/src/repository-picker.tsx: two static class strings become the link utility. Popup position and presence classes are unchanged. - packages/editor/src/static-plan-editor.tsx: the plugin params spread is unchanged. Data flow of every reviewed sink is unchanged. One new exact exception covers StaticPlanEditor's new className, which forwards the caller's static class beside plan, as other class-forwarding components do. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…test IconButton's new data-force-state prop pushed the initial JavaScript 33 B over its budget. The audit now sets the attribute on the mounted button through its existing ref, so IconButton is unchanged from the base. The design behaviour suite still drove the shared Select in the fields plate, which this branch removed because the app never uses it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ebase On top of main's 16px icons, controls.tsx keeps this branch's IconButton recipes and icons.tsx its real colour roles; no class, style or spread data flow changed. Approved by the design owner. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaggieAppleton
enabled auto-merge (rebase)
October 15, 2026 11:55
MaggieAppleton
force-pushed
the
audit-content-controls
branch
from
October 15, 2026 11:55
ce6401a to
c19f339
Compare
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.
Part of the design-audit honesty pass (base: #626). The authored-content, controls, errors and foundations plates now render the components and rules the app renders.
What was fake, and what it renders now
Authored content.
StaticPlanEditorhard-codeddesign-audit-static-planinside@chopin/editor, and the audit used it to override.plan-contentpadding,.plan-workspace/.plan-documentheight,.mdxeditormin-height, image and diagram max-height, the research composer's width and the research cards' height.StaticPlanEditornow takes aclassName. Every specimen sits on the real paper and measure. The only context the plate sets is--document-trailing-space: 0px, so a specimen ends where its content ends.Research. The composer now renders inside
ResearchDraftShell, the shell the live composer opens in. The cards stack in the document column at their real width, not in a 15rem grid.Tables. The selected-cell, toolbar and overflow states were a hand-built
<table>with fake "Add row/Add column" buttons. They are now:TableActionToolbarViewButtons. Hover and press were faked with
[data-audit-state]rules that copied theme.css values, andbtn-outlinehad none. theme.css now has adata-force-stateseam inside each button variant's hover and press selectors (&:is(:hover, [data-force-state="hover"]):not(:disabled)) and on the global focus ring. The copied rules are deleted. Specificity is unchanged and nothing in the app sets the attribute. Outline now shows its real hover and press.Icon buttons render the real
IconButtonin its ghost, nested and compact recipes. Its hover/focus fill in navigation.css also answersdata-force-state, andIconButtonpasses the attribute through. The sidebar-placement variants only reveal on row hover, so they belong to the sidebar plate.Links.
.design-audit-linkwas invented. A newlinkutility in theme.css uses the dominant live treatment (brand ink, underline on hover).repository-picker.tsx("Configure", "Try again") andbuild-view(.build-link) now use it; both were the same treatment written ad hoc. The plate shows only the states links actually have: Default, Hover and Focus. Two call sites were left alone because they look different:new-document-dialog's always-underlinedtext-brandlink and.navigation-creation-status button.Fields. The overrides of
.fieldpadding, font and width are removed, and the inputs use the live classes (field h-8 w-full px-2 text-sm; the textarea uses excerpt-correction's classes). The visualsSelectwas never used live, so it leaves the plate. The adoption plate now says no shared control is adopted.Errors.
TerminalAlerttook its colour from audit CSS; it now passestext-sm text-destructive-inkas production does. The recoverable case is the realNavigationError(InlineNotice with its retry), not a fake box.Foundations. The presentation table's forced
min-widthis gone; the narrow example is now labelled a narrow container. The invented icon "active/disabled" colours are replaced by the real default andicon-dangerroles.Extractions
TableActionToolbarViewinpackages/editor/src/table/action-toolbar.tsxis a pure move of the dock markup.TableActionToolbarkeeps the Lexical selection sync, placement and scroll padding, and renders the view with the same props, classes, aria and handlers. A unit test covers the view's groups, align label and placement.ResearchDraftShellandTableActionToolbarVieware now exported from@chopin/editor.Risks
.build-linkhover underline is now gated by@media (hover: hover), like Tailwind'shover:on the other two sites. Touch devices no longer keep a sticky underline.TableChromein full mode) need an editable editor with a live cell selection, so they are not shown. The phone dock shows no selected-cell wash for the same reason.e2e/design/snapshotsbaselines will change for these plates.responsive.e2e.tsnow checks the real table's overflow lane. The old keyboard-scroll check exercised the fake focusable wrapper; a read-only editor table has no focus stop.Design contract
The reviewed hashes are renewed in a separate commit. Data flow is unchanged for foundations.tsx, icons.tsx, controls.tsx, repository-picker.tsx and static-plan-editor.tsx. One new exact exception covers
StaticPlanEditor's forwardedclassName, using the same reason as the other class-forwarding components.Checks
bun run types,bun test apps/web packages/editor(1677 pass),bun scripts/check-design-contract.ts,bun scripts/check-tokens.ts,bunx oxlinton changed files.🤖 Generated with Claude Code