From 219093c823494bc8d760c99a7a55c4a23059abb5 Mon Sep 17 00:00:00 2001 From: Christophe Besson Date: Wed, 7 Oct 2026 11:38:39 +0200 Subject: fix(hub): move "clear finished" into the finished group's head 9269374 let the transfers header wrap, which broke the one-line header test_layout_measured enforces. The button now sits beside what it clears, and the header is title and summary only. Co-Authored-By: Claude Opus 5.5 --- packages/meshbay-hub/src/meshbay_hub/static/app.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'packages/meshbay-hub/src/meshbay_hub/static/app.js') diff --git a/packages/meshbay-hub/src/meshbay_hub/static/app.js b/packages/meshbay-hub/src/meshbay_hub/static/app.js index bdab271..c1913c0 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/app.js +++ b/packages/meshbay-hub/src/meshbay_hub/static/app.js @@ -228,18 +228,23 @@ function TransferWidget() { running: running.length, waiting: waiting.length })} `} - ${finished.length > 0 && html` - - `} ${groups.map(([label, rows]) => html`
- ${groups.length > 1 && html` + ${/* The finished group always gets its head, because clearing it + lives there. It used to sit in the panel header, where the + title, the summary and the button together outgrow the + panel in French and on a phone: the header either scrolled + the panel sideways or wrapped and changed height. */''} + ${(groups.length > 1 || label === 'finished') && html`
- ${t('transfers.group_' + label, { n: rows.length })} + ${t('transfers.group_' + label, { n: rows.length })} + ${label === 'finished' && html` + + `}
`} ${rows.map(it => html`<${TransferRow} it=${it} key=${it.id} />`)} -- cgit v1.2.3