synops/docs/proposals/varsling.md
vegard 44ec243be8 Proposals: varslingssystem + universell input
Varsling: notification-noder i grafen, trigger ved edge-opprettelse/
nevnelse/oppgave. WebSocket toast + ulest-badge + valgfri epost.

Universell input: én TipTap-komponent med kontekst-drevne moduser
(chat/forum/editor/code). Markup-bytte (WYSIWYG/markdown/LaTeX).
Draft-caching i localStorage + valgfri graf-synk for kryssenhets.
Integrert medieinput og inline-handlinger (@mentions, [[lenker]]).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 16:52:57 +00:00

2.1 KiB

Proposal: Varslingssystem

Konsept

Når noe skjer som angår deg — ny samtale, ny melding, ny oppgave, noen nevner deg — får du et varsel. Varsler er noder i grafen, ikke en separat mekanisme.

Varsling som noder

node_kind: 'notification'
metadata: {
  type: "added_to_conversation",
  actor_id: "vegard-uuid",
  target_id: "redaksjonen-uuid",
  seen: false
}
belongs_to → din person-node

Fordeler:

  • Varsler er søkbare, filtrerbare, arkiverbare
  • Samme PG NOTIFY → WebSocket-pipeline som alt annet
  • Ingen ny infrastruktur

Trigger-hendelser

Hendelse Varsel
Lagt til i samtale "Vegard la deg til i Redaksjonen"
Nevnt i melding (@Trond) "Vegard nevnte deg i Redaksjonen"
Ny melding i samtale (valgfritt) "3 nye meldinger i Redaksjonen"
Tildelt oppgave "Vegard tildelte deg: Fiks lyden"
Innsendt artikkel behandlet "Artikkelen din ble godkjent"
Orkestrering fullført "Transkribering ferdig"

Leveringskanaler

Samme varsel kan leveres via flere kanaler:

  • WebSocket → toast i appen (alltid, sanntid)
  • Ulest-badge i Mine ting (alltid)
  • Epost (konfigurerbart per bruker i metadata.preferences)
  • Lyd-ping (konfigurerbart)

Brukerens preferanser styrer hva som trigger epost vs bare in-app varsel. Default: alt in-app, epost kun for direkte nevnelser og invitasjoner.

Visning

Varsler vises som:

  • Klokke-ikon i header med ulest-teller
  • Dropdown med siste varsler
  • Klikk → naviger til relevant kontekst
  • "Marker alle som lest"

Kan også være et panel i arbeidsflaten ("Varsler"-trait) for de som vil ha det synlig.

Ikke-forstyrrende

  • Ingen popup-vinduer, ingen blokkerende dialoger
  • Toast forsvinner etter 5 sekunder
  • Bruker velger selv hva som sender epost
  • "Ikke forstyrr"-modus per arbeidsflate

Implementering

  1. notification-node-type i maskinrommet
  2. Trigger-logikk i vaktmesteren (ved edge-opprettelse, melding, etc.)
  3. Frontend: toast-komponent + varsler-dropdown i header
  4. synops-notify CLI finnes allerede — utvid med notification-noder
  5. Epost-varsling via eksisterende synops-mail --send