Closed bug report

Thread tiles truncate the DISTINGUISHING tail: 'release test A/B/C/D' all render as 'rele/ase'

John Lauer · 2mo ago ·closed by John Lauer

Seen on AdomLapper and ConfRoomROG during the 2.0.390 release sweep (tiles mode, four threads named 'release test A' .. 'release test D', 2-3 windows each). Every tile rendered as two lines 'rele' / 'ase': the word 'release' was split mid-word and 'test A' etc. was dropped entirely, so the four buttons are indistinguishable even though their favicon badges differ. The tile renderer (renderThreadTileIco: font floor, wrap on space/hyphen, then truncate) keeps the HEAD of the name, but for sibling threads that share a prefix the TAIL is what carries the identity. Asks: (1) never split inside a word when the name has spaces - wrap on the spaces first ('release' / 'test A' fits three short lines at the floor size); (2) when truncation is unavoidable, prefer keeping the last token ('rel.. A' or 'r. test A') over dropping it; (3) allow a third line at the font floor before truncating; (4) a tile-legibility ralph test: render the four sibling names and assert their rasters differ. Names like 'kicad-dev' / 'kicad-tour' and 'ah ship check' / 'ah ship check windows' (both live today) hit the same trap.

2 Replies

John Lauer · 2mo ago

Mock-up: the current Node v2.0.172 layout versus this issue's whole-word wrapping (2026-09-06)

Rendered with the real tile renderer (same font, plate and anchoring) for ten thread names. Row 1: the current algorithm (font floor 36% of the tile, two lines, characters taken until the line is full, which splits words: "Fusi / on tr", "KiCa / d per-", "rele / ase" for every "release test X"). Row 2: this issue's rules: wrap on spaces, after hyphens and slashes, never inside a word while the name has separators, up to three lines down to a 29% floor, and when a word still cannot fit it is cut with an ellipsis while the LAST token is kept whole ("rele… / test / A" keeps the letter that tells A from B).

Where row 2 loses: single long words ("reclaimed" becomes "recl…" instead of "recl / aime"). A hybrid keeps the current character split for names without separators and uses the whole-word rules otherwise.

The small tile beside each is the 32 px rendering, roughly what a 100% taskbar shows.

tile-mock

John Lauer · 2mo ago

Resolved in 2.0.441 to 2.0.448 (insiders). The tile renderer now: two lines at most (three read too small); whole-word wrap on spaces, hyphens and slashes when both lines fit at or above the size floor, else the character split; never an ellipsis (every character on a tile is identity). And since 2.0.448 (t10) every ICO entry is drawn by the canvas at its own size (16, 20, 24, 30, 32, 36, 40, 42, 48, 64, 256), so the glyphs are rasterised for the exact pixel grid Windows shows (36 px at 150 %), no resampling and no sharpening halos. The AUMID folds in a content hash of the tile (2.0.445), so a re-rendered identical tile keeps its button. Verified on AdomLapper by a native-resolution taskbar capture. Closing.

John Lauer closed this · 2mo ago

Log in to reply.