Files
dsh-context/src
bowenliang123 667e1a9c71 fix(client): hold every data-dependent lane so the page stops reflowing
Opening the Context tab, and every step landing after it, moved the cards
below: the page grew 343px on a cold open and the trend card jitters by a few
pixels on each step. Seven independent sources, all the same shape — a box
whose height came from its content instead of from its role:

- The brief lane under the chart held a 76px floor but its rows were 24.5px
  bare and 26.5px carrying a chip, so the lane measured 79.5px or 81.5px
  depending on the step. Every row is now a constant 27px.
- The detail header let its metric pills share a wrapped line with the title,
  so its height followed which pill topped each line as the figures changed.
  The pills now claim a full row of their own.
- The file card's empty state replaced the controls and the 320px list with
  a one-line note, a 265px collapse on the first read of a session. The band
  and the list lane now render in every state, and the lane holds the list's
  height.
- The file card's filter band rewrapped as its tallies gained digits; it now
  reserves its folded height, which depends on the card's width alone.
- The context browser's category rows wrapped as the per-step item counts
  changed; they now stay on one line and the name ellipsizes.
- A title carrying only text wrapped when its scope chip changed length
  (longest in English), resizing the card mid-scrub. Text-only titles keep
  one line; titles carrying toggle groups keep the wrap they need.
- The trend card's pending body rendered as a one-line note and grew by its
  whole height when the first step arrived, shoving the page down. It now
  stands in the panel's OWN boxes — same classes, same grid — so the detail
  fills the card instead of growing it.

Measured across 360px–1440px in both locales: every card's height variance
while scrubbing a 40-step session is 0, and the cold-open fold is 5px.
2026-10-10 17:15:37 +08:00
..