Hive
fix(server, noora): truncate long table text-and-description cells by default
GitHub issue · Closed
Reported in Slack: the tables on Module Cache → Generations and Module Cache → Cache Runs look “all messed up” for projects with very long target lists.
What changed
Truncation is now the default for Noora’s text_and_description_cell:
- New
truncateattr (defaulttrue, opt out withtruncate={false}) rendersdata-truncateon the cell. - The cell’s column is capped at
30remand the label + description are clipped with an ellipsis.
Why
The first column of both tables renders the full tuist generate … command via text_and_description_cell. Unlike text_cell, that cell had no truncation, and the table is min-width: max-content — so a command with dozens of target arguments sized the column to the entire string and pushed every other column (Hit rate, Status, Branch, Ran at…) off-screen.
Rather than patch only those two columns, the fix makes truncation the default so the same blow-up can’t recur on any other table that uses this cell (~20 usages: previews, bundles, members, build runs, flaky/quarantined tests, etc.). The cap lives on the column rather than the label, so a long description can’t widen the column either.
Short labels never reach the cap, so typical cells are visually unchanged — only unbounded values get clipped.
Why this over the alternatives
- Server-side string truncation would lose information, pick an arbitrary character cutoff, and wouldn’t fix the underlying CSS issue (a different long column would still overflow). CSS clipping keeps the full text in the DOM and the full command on the run detail page.
- Opt-in per column (the first iteration) fixed only the reported pages; making it the default prevents recurrence elsewhere, which was the explicit ask.
Developer impact
Any table cell that genuinely needs to grow can opt out with truncate={false}.
How to test locally
- Open a project with generate/cache runs that have many target arguments, e.g.
/<account>/<project>/module-cache/generate-runs. - The Command column now clips with an ellipsis and the remaining columns stay visible; horizontal scroll still works for the rest of the row.
Validation
- TDD regression tests on the generate-runs and cache-runs LiveViews render a run with 40 target arguments and assert the command cell truncates — confirmed red before the change, green after.
mix testacross generate-runs, cache-runs, previews, bundles, and members LiveViews: 43 tests, 0 failures (the new default attribute breaks nothing).- Verified the layout in a standalone repro of the real table markup + CSS: long label clips with an ellipsis, a long description is capped too, and a short/typical cell is unchanged.
🤖 Generated with Claude Code
Investigate, reproduce, or fix this item in an isolated repository. Each Flight preserves its outcome and agent session.
Start a Flight and preserve its objective, outcome, and session here.
No GitHub comments yet.