# Feature: Dagbok (Privat journal) **Filsti:** `docs/features/dagbok.md` ## 1. Konsept En personlig dagbok-visning som samler brukerens private noder — innhold som ikke er delt med andre via edges. Fungerer som en kronologisk logg over tanker, notater og idéer som kun er synlige for eieren. ## 2. Status **Implementert med nodes+edges (mars 2026).** Sanntid via PG LISTEN/NOTIFY + WebSocket. ### Implementert - Frontend: `/diary` route med dagbok-visning - Filtrering: viser kun noder som er opprettet av brukeren og ikke har delte edges (ingen non-system edges til andre brukere/noder) - Ekskluderte node-typer: `communication`, `agent`, `person`, `team` - Gruppering etter dato med norske datoetiketter ("I dag", "I går", ellers fullt format) - Kronologisk sortering (nyeste først) - Tidsstempel per innlegg - Inline oppretting av nye dagbokinnlegg (tittel + innhold) - Nye innlegg får `visibility: 'hidden'` og `owner`-edge fra bruker - Tilgjengelig som panel i arbeidsflaten - Responsivt design (max-w-3xl, mobilklar) ### Gjenstår - Redigeringsmodus for eksisterende innlegg - Rik tekst-editor (gjenbruk NodeEditor-komponenten) - Sletting av innlegg - Søk/filtrering i dagboken - Eksport-funksjon ## 3. Datamodell Dagboken bruker ingen egne tabeller eller edge-typer. Den er en **visning** (query) over eksisterende noder og edges. ### Hva er et dagbokinnlegg? En node som oppfyller alle tre kriterier: 1. `created_by = ` 2. `node_kind` er ikke `communication`, `agent`, `person` eller `team` 3. Ingen non-system edges der den andre enden er en annen bruker/node (kun `owner`-edge fra bruker, system-edges, og selv-refererende edges er tillatt) ### Oppretting ``` POST /intentions/create_node { node_kind: "content", title: "...", content: "...", visibility: "hidden" } POST /intentions/create_edge { source_id: , target_id: , edge_type: "owner" } ``` ## 4. Frontend ### Route `/diary` → `frontend/src/routes/diary/+page.svelte` ### Datakilde WebSocket-sanntidsdata via `nodeStore` og `edgeStore`. Ingen backend-query — all filtrering skjer i frontend basert på data mottatt via initial sync + WebSocket. ### UI-struktur - Header med tilbake-lenke til mottak og innlegg-teller - Ny-innlegg-knapp (utvides til skjema med tittel + tekstfelt) - Innlegg gruppert per dato, sortert nyeste først - Hvert innlegg viser tidsstempel, tittel, og innholdsutdrag