A table is a component, and scroll wrappers need a min-width to engage - #300
Merged
Conversation
#282 fixed the table treatment and #284 reverted it — not because the design was wrong, but because it was written into the overlay's injected reader CSS, which is being sunset. That revert said where it belonged: "the fix belongs in authoring/". This puts it there. Every cell is currently a tinted chip with a 3px gutter, which reads as a pile of blocks rather than a table: the gutters cut the columns, so there is no continuous edge to scan down, and rounded corners multiply with every row. Fills are also the worst case for this reader, where dark mode is a whole-page invert — a filled cell becomes a slab, while a hairline only changes colour. So a table is now a component: one hairline card, a rule under each row, nothing filled, a header in the muted ink rather than a tinted band, tabular numerals. All four styles give it their own values, the way they already do for the other nine. The three "tables inherit the overlay default" lines now point at that instead of at the layer that is going away. The scroll wrappers get the rule that was missing. components.md said to wrap a wide figure in diagram-box so it scrolls, but overflow-x on the wrapper does nothing while the child is width:100% — it can never overflow. It shrinks instead, and a 696-unit figure's labels land near 5px on a phone. The rule existed only in SKILL.md's responsive section, one file away from where figures are described. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Writing the ruled-card treatment into a doc left every cell filled. The rule
set border and padding but declared no background, so the reader's
:where(body th, td) { background: var(--td-surface) } went on applying — the
borders changed and the fill did not, which looks like the treatment silently
not landing.
Measured on the published page: 0.2% of the table area was white before,
89.4% after adding background: transparent.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
PreviewOpen this: https://pr-300-tdoc-preview.jyshi1107.workers.dev/d/conway-life/v/2 This link is unique to this PR. New commits update the same URL. It is not tdoc.dev. Preview has no Durable Object — concurrent comments use the KV fallback. Data expires in 14 days. |
serenakeyitan
added a commit
that referenced
this pull request
Aug 28, 2026
…hanged (#301) The ruled-card table shipped with row rules that stop at the column boundary and curve away instead of crossing the table. Same class of miss as the fill in #300, one property along. The reader styles cells as standalone chips — a fill and a corner radius of their own — and both survive any rule that does not name them. #300 added background:transparent and stopped there, so border-radius:8px stayed on every cell. Under border-collapse:separate each cell is its own box, so a border-bottom on it is rounded off at both ends, and two rounded ends meeting in the middle read as a break in the rule. Counting gaps along a row rule on a two-column table: 3 with the radius left in place, 0 without it. components.md now says to reset the cell's shape rather than the parts being changed, and names both properties. The card carries the radius; the cells do not. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
serenakeyitan
added a commit
that referenced
this pull request
Aug 28, 2026
Two things about the table treatment from #300. The radius is gone from the contract and from all four styles. A rounded card competes with the figures around it, and on the cells it was worse than decorative — that was the break in the row rules #301 chased: under border-collapse:separate each cell is its own box, so a rounded one truncates the rule at both ends and two of those meeting in the middle read as a gap rather than a continuous edge. default, paper and editorial carried rx:12, rx:6 and rx:10; all four now say square, which is what technical already said. The header was set at 13.5px in the muted ink — smaller and greyer than the body, so it read as a quieter row rather than a different kind of row. It now takes the style's label-type token, which every entry already declares, over its own rule a step stronger than the row rules beneath it. A table header is a label, so this is the token doing the job it exists for rather than a new rule invented for tables. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
#282 fixed the table treatment and #284 reverted it — not because the design was wrong, but because it was written into the overlay's injected reader CSS, which is being sunset. That revert named the destination: "the fix belongs in
authoring/". This puts it there, where the component model now has a place for it.The table
Every cell is currently a tinted chip with a 3px gutter, which reads as a pile of blocks rather than a table. The gutters cut the columns, so the eye has no continuous edge to scan down, and rounded corners multiply with every row. Fills are also the worst case for this reader, where dark mode is a whole-page invert — a filled cell becomes a slab while a hairline only changes colour.
A table is now a component: one hairline card, a rule under each row, nothing filled, a header in the muted ink rather than a tinted band, tabular numerals. All four styles give it their own values the way they already do for the other nine, and the three "tables inherit the overlay default" lines point at that instead of at the layer that is going away.
Two things the contract was missing
Scroll wrappers need a
min-width.components.mdsaid to wrap a wide figure indiagram-boxso it scrolls, butoverflow-xon the wrapper does nothing while the child iswidth: 100%— it can never overflow, so it shrinks, and a 696-unit figure's labels land near 5px on a phone. The rule existed only in SKILL.md's responsive section, one file away from where figures are described.The fill has to be cleared, not just the borders. Writing the ruled-card treatment into a document left every cell filled anyway: the rule set border and padding but declared no background, so
:where(body th, td) { background: var(--td-surface) }went on applying. Measured on the published page, the table area went from 0.2% white to 89.4% oncebackground: transparentwas added. A treatment that changes the borders and not the fill looks like the change silently not landing, which is the expensive kind of wrong.Checks
46 offline suites green; the component-coverage test now expects ten parts per style rather than nine. Verified end to end on tdoc.dev by publishing the doc and sampling the rendered table.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Xw9Mt3rV3ujnejPr41pqvz