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

75 lines
2.1 KiB
Markdown

# 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`