synops/docs/features/dagbok.md
vegard 2ba830c7b4 Dagbok-visning: privat journal sortert på tid (oppgave 9.3)
Ny /diary-route som viser brukerens private noder — de som kun har
owner-edge og ingen delte edges til andre. Gruppert etter dato,
nyeste først, med inline oppretting av nye innlegg.

Dagbok-knapp med tellebadge lagt til i mottak-siden.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 22:34:13 +00:00

2.4 KiB

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 SpacetimeDB.

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
  • Dagbok-lenke med tellebadge i mottak-siden
  • 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 = <brukerens node-ID>
  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: <bruker>, target_id: <ny_node>, edge_type: "owner" }

4. Frontend

Route

/diaryfrontend/src/routes/diary/+page.svelte

Datakilde

SpacetimeDB sanntidsabonnement via nodeStore og edgeStore. Ingen backend-query — all filtrering skjer i frontend basert på SpacetimeDB-data som allerede er lastet.

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