From 161c518aa718580e4a963ecb18fed78d62ac1e87 Mon Sep 17 00:00:00 2001 From: Connor Johnstone Date: Tue, 8 Sep 2026 18:13:36 -0400 Subject: [PATCH] Sortable triage, and say which sort is active The list was ordered by max(interest, importance) and nothing on the page said so, which makes it impossible to tell whether an odd ranking is a bug or the intended order. Five orders, with the active one explained in a line beneath the control: best highest of the two scores (unchanged default) interest purely the taste profile, importance ignored entirely important purely the importance axis -- velocity, corroboration, prominence new most recently seen, regardless of score covered most independent newsrooms, syndicated copy collapsed "My interests" is the one that was actually missing. The two-axis design means a quiet story that is very much the reader's can sit below a big one that is not, and until now there was no way to see past that. An unknown sort falls back to the default rather than erroring. --- news/templates/triage.html | 30 ++++++++++++++++++---- news/web.py | 29 +++++++++++++++++++-- tests/test_delivery.py | 52 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 104 insertions(+), 7 deletions(-) diff --git a/news/templates/triage.html b/news/templates/triage.html index dd40e02..84bdada 100644 --- a/news/templates/triage.html +++ b/news/templates/triage.html @@ -15,7 +15,14 @@ .stats, .filters { color:var(--muted); font-size:.83rem; } .filters a { color:var(--accent); text-decoration:none; margin-left:.6rem; } .subbar { display:flex; gap:1rem; flex-wrap:wrap; justify-content:space-between; - margin:-.4rem 0 1rem; } + align-items:center; margin:-.4rem 0 .35rem; } + .controls { display:flex; gap:.7rem; align-items:center; } + .controls label { font-size:.78rem; color:var(--muted); display:flex; gap:.3rem; + align-items:center; } + .controls select { font:inherit; font-size:.8rem; background:var(--card); + color:var(--fg); border:1px solid var(--rule); + border-radius:5px; padding:.15rem .3rem; } + .sortnote { color:var(--muted); font-size:.78rem; margin:0 0 1rem; } .filters a.on { text-decoration:underline; } article { background:var(--card); border:1px solid var(--rule); border-radius:9px; @@ -70,11 +77,24 @@
{{ rows|length }} shown · {{ labelled }} labelled · {{ total }} clusters - show - unlabelled - all - +
+ + + +
+

{{ sort_help }}

{% for r in rows %}