feat: structured @-mentions (notify+clickable+hover), distinct links, Ctrl-rebalance sliders

- Mentions now insert a span carrying the user id (handles names with spaces):
  the sanitizer permits <span class="mention" data-user-card="ULID">, comment
  and chat notifications resolve by id and only fire for users with access,
  and mentions render as clickable chips with the shared hover user-card.
- Messages composer inserts an atomic, non-editable mention chip so the
  trailing space no longer collapses while typing.
- Links inside chat messages and task comments are underlined/accented so they
  read as clickable.
- Atomization: hold Ctrl/Cmd while dragging an effort slider to rebalance the
  sibling coefficients proportionally (sum stays ~1.00); added a hint.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
etalon
2026-06-13 12:09:17 +02:00
parent 70cb664246
commit b232b4b3d3
9 changed files with 239 additions and 59 deletions
+21
View File
@@ -766,6 +766,27 @@ input[type=range] { width: 100%; accent-color: var(--accent); }
border-color: color-mix(in srgb, var(--accent) 70%, black);
}
/* ---- @-mention chips + links inside chat/comments ---- */
.mention {
color: var(--accent);
font-weight: 600;
cursor: pointer;
border-radius: var(--radius);
padding: 0 2px;
white-space: nowrap;
}
.mention:hover {
background: color-mix(in srgb, var(--accent) 16%, transparent);
text-decoration: underline;
}
/* links in messages and comments are underlined so they read as clickable */
.chat-msg a:not(.btn), .cw-msg a:not(.btn), .comment-body a:not(.btn) {
color: var(--accent);
text-decoration: underline;
text-underline-offset: 2px;
font-weight: 500;
}
/* ---- @-mention autocomplete menu ---- */
.mention-menu {
position: absolute; z-index: 80;