Tip tooltips were whitespace-nowrap (one very wide line) and clipped by
the Section card's overflow-hidden. Bound the bubble width with wrapping
(w-44, whitespace-normal, centered) and drop overflow-hidden from Section
(keeping rounded corners via rounded-t/b-xl on the header) so long tips
like Custom Params render fully.
Saving an unchanged name made the server writer return false, which the
handler misreports as 'Classname not found in furnidata'. Gate the
'Save name/desc' button on a real diff (furnidataDirty) so an unchanged
save can no longer fire that misleading error.
- Merge the lone Inventory permission (allowInventoryStack) into the
Gameplay group, dropping the separate Inventory header+row to save
vertical space.
- Rework the header meta row: ID/Sprite as label+monospace-value pills,
'in use' tinted green with a dot when placed instances exist (grey at
0), 'Unsaved' as an amber pill with a dot.
~1.4k items_base rows (pets, custom items) have no matching furnidata
classname, so saving their name returned the cryptic server error
'Classname not found in furnidata'. Detect this client-side via the
resolved furniDataEntry (entry + classname match) and, when absent,
hide the Display Name/Description inputs + Save behind a clear
'NO FURNIDATA' notice instead of letting the save fail. In-furnidata
furni (~97.6%) are unchanged.
Enabled chips now use a solid teal fill (bg-[#1E7295]) with white
text + a white status dot; disabled chips are muted grey with a grey
dot. The old bg-primary/10 + text-primary 'on' state was nearly
indistinguishable from 'off'. Adds aria-pressed + title for a11y.
- Chat input @ autocomplete: typing @ shows online users (room users +
online friends + room aliases) with avatars; arrows/Tab/Enter to pick.
- Any valid @nick token is highlighted blue in chat bubbles (like @all),
giving visual feedback that it is a recognised mention.
- Side notification toast on a received mention: sender avatar (from the
new senderFigure wire field) + message + dismiss; dismiss marks it read
so the toolbar unread badge updates. Auto-hides after 8s.
- IMentionEntry/parsers carry senderFigure end to end.
The slice/rim/divider/hub colors are now read from --wheel-* CSS variables
with the current values as fallbacks, so the stock look is unchanged while a
runtime theme can recolor the wheel without rebuilding.