fix(welcome): judge-panel fixes on the new launcher row

Design B ("one primary + chips") won a two-judge panel over a launcher grid
and a command panel. Their defect list, fixed here:

- The tunnel spinner's track was the shared translucent white and vanished on
  light skins; it now follows the link's own text colour.
- A running tunnel was only green text above its QR; it now shows as a quiet
  green pill, and the resting link uses --text-dim (contrast).
- A long custom CLI label could push a horizontal scrollbar into the welcome
  column: labels sit in a .welcome-label span that ellipsizes (still one text
  node, so i18n.js matches it), and both buttons cap at the column width.
- Chips are 40px tall on coarse pointers (tablets reach this view).
- The OG primary's colours now name the toolbar Run rule they mirror.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Codeman maintainer
2026-10-08 23:07:55 +02:00
parent a1d07a56e5
commit 34cbd5015b
3 changed files with 60 additions and 9 deletions
+10 -3
View File
@@ -1693,8 +1693,12 @@ Object.assign(CodemanApp.prototype, {
disc.className = 'welcome-primary-logo';
disc.appendChild(logo(primary));
main.appendChild(disc);
// One raw string, kept whole: i18n.js matches the exact text node.
main.append(runLabel(primary));
// One raw string, kept whole: i18n.js matches the exact text node. The span
// only lets a long custom label ellipsize (styles.css .welcome-label).
const mainLabel = document.createElement('span');
mainLabel.className = 'welcome-label';
mainLabel.textContent = runLabel(primary);
main.appendChild(mainLabel);
main.onclick = launch(primary);
container.appendChild(main);
@@ -1715,7 +1719,10 @@ Object.assign(CodemanApp.prototype, {
chip.title = runLabel(cli);
chip.setAttribute('aria-label', runLabel(cli));
chip.appendChild(logo(cli));
chip.append(cli.kind === 'shell' ? 'Shell' : cli.label);
const chipLabel = document.createElement('span');
chipLabel.className = 'welcome-label';
chipLabel.textContent = cli.kind === 'shell' ? 'Shell' : cli.label;
chip.appendChild(chipLabel);
chip.onclick = launch(cli);
chips.appendChild(chip);
}