@-Mentions: Inline-Node, User-Suche, Autocomplete #150
Labels
No Label
area:auth
area:docs
area:export
area:ops
area:storage
area:supply-chain
auth
backend
blocked
collab
deployment
docs
effort:L
effort:M
effort:S
frontend
plugins
qa
vs-nfd
vs-nfd:blocker
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: stwaidele/dorfteich#150
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ziel
@Namemarkiert einen Nutzer als strukturierter Inline-Node. Erwähnbar sind ALLE Nutzer der Instanz (Autocomplete). Benachrichtigungen sind ein Folge-Issue.Umsetzungsskizze
mention(Blaupause wikilink,packages/shared/src/editor-schema/schema.ts:233-257), Attrs{userId, username}. userId = stabile Referenz; Anzeige rendert live den aktuellen displayName (Umbenennung wirkt sofort), Fallback@username; gelöschte/unauflösbare Nutzer = toter@username-Chip.@username(Rule/Token-Mapping/Serializer inmarkdown.tsanalog wikilinkRule); der DB-lose Markdown-Import lässt userId leer (rein visuell, löst nichts aus).html.ts(renderInline) +plain-text.ts(FTS) erweitern; neuer Extraktorpackages/shared/src/editor-schema/mentions.ts(Vorbildwikilinks.ts).apps/web/src/editor/nodes/mention.tsx;MentionAutocomplete.tsxals Klon vonWikilinkAutocomplete.tsx(Trigger@).GET /users/search?q=(authentifiziert, instanzweit — die teichgebundene Mitgliederliste reicht nicht): exponiert NUR id/username/displayName; min. 2 Zeichen, Limit 10, Throttle. Dokumentierte Konsequenz: eingeloggte Nutzer können Nutzernamen entdecken (Entscheidung Stefan).Akzeptanzkriterien
@öffnet die Suche über alle Nutzer; Auswahl erzeugt den Node mit userId.@username; HTML/FTS/Export zeigen die Mention.Bewusst nicht enthalten
Benachrichtigungen (Folge-Issue), userId-Auflösung beim Markdown-Import, Mentions in Kommentaren.
Umgesetzt in PR #158 (
7471fc7): Inline-Atom mention {userId, username} — Markdown-Regel @username (E-Mail-sicher), Serializer, HTML-Chip, Plain-Text fuer die Suche, Extraktor extractMentionUserIds. Neue Endpoints GET /users/search (auth, min. 2 Zeichen, Limit 10, Rate-Limit 60/min) und GET /users/brief (Batch-Aufloesung). Editor: Autocomplete nach dem Wikilink-Muster, NodeView zeigt den LIVE-Anzeigenamen (Umbenennung wirkt sofort), geloeschte/unaufgeloeste Nutzer als toter Chip. 5 Unit-Tests; Loop live verifiziert.