- Ya
- 26 Agosti 2026, 19:21 UTC
- Mwandishi
- kamo
- Ahadi ya
- 58a54e3
Clicking a hex head opened a context menu, which meant the common act — get my chat back — cost two clicks, and the menu itself was reachable no other way. The two are now separate gestures: - Left click / tap restores the window, dispatching the same `tool:focus` the menu's "Open" row already used. focusTool un-minimizes and emits removeHexhead, so the head clears itself. - Right-click opens the menu. Secondary buttons no longer start a drag, so the press that opens it cannot also fling the head. - Touch has no second button, so a 600ms stationary hold stands in. It is armed only for non-mouse pointers and disarmed the moment the head detaches, so "hold it still" is the whole gesture — dragging a head for longer never opens the menu, and a menu already open is retracted if a drag then starts. The menu's own changes: - The header X is gone. Its only label was "Close", which reads as "dismiss this menu" — the one thing it did not do — so it moves into the option list beside "Open {name}" as "Close {name}", where what it discards is spelled out. - Placement now puts a CORNER of the panel on the CENTRE of its head, picking whichever of the four corners keeps the most of it on screen. The old rule ("beside the head, flip, then clamp") is what made the position look arbitrary: the clamp shoved the panel away from its head near a screen edge, which is exactly where heads live. Extracted to **************** so it is pure and testable; the panel is measured rather than guessed at 460px. - A member's chat head shows their photo, falling back to initials. This needed a new HeadState.avatarSrc: the head's `src` always falls back to a generated initials image, so it could never answer "is there a photo?". - Every piece of chrome paints from var(--color-primary) instead of a fixed indigo/violet, which came out that colour for every white-label org regardless of their palette. Presence colours stay semantic. Also fixes a resize listener the popover added on every open and never removed. Needs kamo-translation-dictionary 5eac4334 (closeChat/closeTool), already pushed.