From dd91b83c273cba913cefbb2f2c01c4fc0f9d8b6c Mon Sep 17 00:00:00 2001 From: Tyler Hallada Date: Sun, 20 Sep 2026 21:29:03 +0000 Subject: [PATCH] Badge lists wrap on their own; note table floors in the doc Co-Authored-By: Claude Fable 5.1 --- docs/dashboard-tables.md | 13 +++++++++---- src/web/templates/_candidate_row.html | 2 +- src/web/templates/dashboard/articles.html | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/docs/dashboard-tables.md b/docs/dashboard-tables.md index 72226f6..5911210 100644 --- a/docs/dashboard-tables.md +++ b/docs/dashboard-tables.md @@ -36,10 +36,10 @@ nowrap ones kept everything. | class | use it for | behaviour | | ------------ | -------------------------------------------------------------- | ---------------------------------------------------------------------- | - | *(none)* | short prose, names, tokens, badges | wraps at spaces | + | *(none)* | short prose, names, tokens, badges and badge lists | wraps at spaces (a `.badge` is nowrap on its own, so lists wrap between badges) | | `num` | numbers, money, counts | right-aligned tabular figures; `td.num` never wraps, `th.num` may | | `cell-tight` | timestamps, dates, ids, a single short token that must not split | `white-space: nowrap`. Nothing longer than ~20 characters | - | `cell-wrap` | titles, URLs, notes, messages, badge lists, anything free-form | floor 10rem, ceiling 32rem, `overflow-wrap: anywhere` | + | `cell-wrap` | titles, URLs, notes, messages, anything free-form | floor 10rem, ceiling 32rem, `overflow-wrap: anywhere` | Anything long that must not wrap gets an inner block with a Tailwind clamp (`
`) inside a `cell-wrap` cell; the cell @@ -57,9 +57,14 @@ nowrap ones kept everything. - Give every `td` one of the four classes above according to its content. When in doubt, leave it unclassed: wrapping is the safe default. - Never `cell-tight` a name, a title, a reason sentence or a free-text field. -- Check the page at 390, 1280 and 2560px. At 1280 and above the wrapper's +- Check the page at 390, 1280 and 2560px. At 1440 and above the wrapper's `scrollWidth` must equal its `clientWidth`; at 390 a wide table is allowed to - scroll. + scroll. A table's floor is the sum of its nowrap columns plus 10rem per + `cell-wrap` column: the 13-column articles table bottoms out near 1270px, so + it still scrolls a little on a 1280px viewport. Tables inside a `.card` + cannot grow past the card (20rem minimum), so a card table with more than + four numeric columns (run page: provider usage) scrolls inside its card at + 1280px; move such a table to page level if that matters. ## Measuring diff --git a/src/web/templates/_candidate_row.html b/src/web/templates/_candidate_row.html index 4208353..0f1e627 100644 --- a/src/web/templates/_candidate_row.html +++ b/src/web/templates/_candidate_row.html @@ -11,5 +11,5 @@ {{ candidate.triage }} {{ candidate.quality }} {{ candidate.fit }} -{% if candidate.exploration %}exploration{% endif %}{% if candidate.auto_include %}auto{% endif %} +{% if candidate.exploration %}exploration{% endif %}{% if candidate.auto_include %}auto{% endif %} diff --git a/src/web/templates/dashboard/articles.html b/src/web/templates/dashboard/articles.html index d19d744..626ce62 100644 --- a/src/web/templates/dashboard/articles.html +++ b/src/web/templates/dashboard/articles.html @@ -24,7 +24,7 @@ {{ article.first_seen }} {{ article.title }} {% if let Some(feed_id) = article.feed_id %}{{ article.feed }}{% else %}{{ article.feed }}{% endif %} -{% for interest in article.interests %}{{ interest.name }}{% if !loop.last %} {% endif %}{% endfor %} +{% for interest in article.interests %}{{ interest.name }}{% if !loop.last %} {% endif %}{% endfor %} {{ article.words }} {% if let Some(stage) = article.stage %}{{ stage }}{% if let Some(run_id) = article.run_id %} {% if let Some(date) = article.run_date %}{{ date }}{% else %}run {{ run_id }}{% endif %}{% endif %}{% else %}never considered{% endif %} {% if let Some(reason) = article.reason %}{{ reason }}{% endif %}