Fix trace State pane words bleeding across Stack/Memory/Calldata columns - #9
Merged
Conversation
.ss-trace h3, .ss-trace ol, .ss-trace li and .ss-trace li code were
descendant selectors targeting an ancestor class, `.ss-trace`, that no
element in the app actually carries — the v1.1 cockpit redesign moved the
Trace tab's wrapper to `.ss-probe-trace`/`.ss-probe-body`, and this block
was never updated to match. So the rules that clip each stack/memory word
to one line (overflow: hidden; text-overflow: ellipsis; white-space:
nowrap) never applied; a 64-char hex word rendered at browser defaults
(display: inline; white-space: normal; overflow: visible) and spilled
across the Stack/Memory/Calldata grid columns.
Retargeted the four selectors to `.ss-trace-panes`, the class that
actually wraps these lists in MachineStatePanes.tsx, and removed the
now-fully-orphaned base `.ss-trace { border; padding; margin-top }` rule
alongside it — it matched zero elements for the same reason.
Verified against the real dev build: before the fix, a stack word's
computed style was `display: inline; overflow: visible; white-space:
normal` and it wasn't confined to its pane's width; after, it's `display:
block; overflow: hidden; white-space: nowrap` and stays inside its
column. Added a geometry assertion to the existing X5 trace test so a
word's right edge can never exceed its own pane again.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
The bug
In the Trace → State tab, long words (a stack word, a memory word, calldata) render
without clipping and bleed across the Stack / Memory / Calldata columns.
Root cause
app.csshas rules meant to clip each list item's hex word to one line:.ss-trace ol,.ss-trace li,.ss-trace li code, and.ss-trace h3are alldescendant selectors — they only apply to elements inside something carrying the
literal class
ss-trace. Nothing in the app has that class. The v1.1 cockpitredesign moved this panel's wrapper to
.ss-probe-trace/.ss-probe-body(
ProbePane.tsx), and this CSS block was never updated to follow. The base.ss-trace { border; padding; margin-top }rule was orphaned the same way.So every one of these rules silently matched zero elements, and a stack/memory
word rendered at plain browser defaults for
<code>—display: inline; white-space: normal; overflow: visible— which is exactly the "unclipped,bleeding across columns" look in the report.
The fix
Retargeted the four selectors to
.ss-trace-panes, the class that actually wrapsthese lists in
MachineStatePanes.tsx, and removed the now-fully-orphaned base.ss-tracerule alongside it.I checked this wasn't accidentally relied on elsewhere:
ObservationList.tsx's<ol>/<li>(the Accesses tab) use their own.ss-obs-*classes and were neverunder a
.ss-trace-classed ancestor either, so retargeting these four rules to.ss-trace-paneschanges nothing outside the State tab.Verification
Confirmed with real computed styles from the dev build, not just reasoning:
<code>displayinlineblockwhite-spacenormalnowrapoverflowvisiblehiddenScreenshot after the fix — Stack / Memory / Calldata each stay in their own
column with clean single-line truncation.
Added a geometry assertion to the existing
X5trace test (trace.spec.ts) so aword's right edge can never exceed its own pane's right edge again — this is a
regression a snapshot or a
toContainTextcheck wouldn't catch, since the textcontent is unchanged; only the layout was broken.
format:check,lint,typechecktest:unittest:e2efixtures:verifyrelease:verifybuild:check🤖 Generated with Claude Code