# Forslag: Personlig workspace

> **Superseded:** Dette forslaget er erstattet av retningen
> "noder er sentrum" (se `docs/retninger/bruker_ikke_workspace.md`).
> Det finnes ingen workspaces. Privat rom oppstår naturlig:
> noder uten edges til andre brukere er ditt private rom. Personlig
> kanban, kalender og notater er bare noder du eier uten delte edges.
> Dokumentet er bevart som historisk referanse.

## Idé
Hver bruker får et personlig workspace som fungerer som en individuell produktivitetssuite. Alle verktøyene et delt workspace har — kanban, kalender, notater, graf-koblinger — men privat og selvorganisert. I tillegg: en personlig publiseringskanal ("blogg") der tekster kan deles med omverdenen.

## Hvorfor er dette interessant?

### Individuell produktivitet
Redaksjonsmedlemmer trenger et sted å jobbe uforstyrret:
- Personlige oppgavelister (kanban)
- Egen kalender (deadlines, påminnelser)
- Kladder og research-notater
- Graf-koblinger til temaer og aktører de følger

`visibility = 'private'` på meldingsbokser innenfor delte workspaces dekker noe av dette, men gir ikke en *egen arbeidsflate*. Et personlig workspace gir:
- Eget kanban-brett for personlige oppgaver (ikke synlig for andre)
- Egen kalender (kan overlappes med delt kalender i UI)
- Egne notater uten støy fra fellesrommet
- Egne graf-koblinger og research

### Personlig publisering
Med tekst-primitiven (se `tekst_primitiv.md`) og publiseringsmodellen (se `artikkel_publisering.md`) kan personlig workspace også være utgangspunkt for en personlig blogg/feed:
- Skriv en tekst i personlig workspace
- Publiser den → tilgjengelig på en personlig URL (`sidelinja.org/@vegard/...`)
- Teksten kan også plukkes opp av en felles publikasjon (se artikkel-publisering)

## Hva bygger den på?
- **Workspace-modellen** (RLS, workspace_members) — et personlig workspace er bare et vanlig workspace med én member
- **Meldingsboks** — alt er allerede workspace-scopet
- **Tekst-primitiv** (proposal) — gir notater en skikkelig editor
- **Artikkel-publisering** (proposal) — gir publiseringskanalen

## Skisse

### Verktøy i personlig workspace

| Verktøy | Hva det er | Bygger på |
|---|---|---|
| Oppgaver | Personlig kanban-brett | `kanban_card_view` |
| Kalender | Personlig kalender | `calendar_event_view` |
| Notater/kladder | Meldinger med rich text editor | Tekst-primitiv |
| Research | Editor AI-knapp + graf-koblinger | Kunnskapsgraf, AI gateway |
| Personlig feed | Publiserte tekster med egen URL | Artikkel-publisering |

Alle disse er eksisterende features brukt i en personlig kontekst. Ingen ny funksjonalitet — bare et eget workspace å bruke dem i.

### Opprettelse
Automatisk ved brukerregistrering. Workspacet er implisitt — det dukker opp i workspace-switcheren med et visuelt skille (ikon, farge, eller plassering).

Slug: `personal-{authentik_id}` (intern), visningsnavn: brukerens display_name.

### Workspace-switcher
```
┌─────────────────────┐
│ 👤 Mitt workspace    │  ← alltid øverst, visuelt adskilt
├─────────────────────┤
│ 📻 Sidelinja         │
│ 🏛️ Foreningen        │
│ ...                  │
└─────────────────────┘
```

### Flytt mellom workspaces
Tre strategier, rangert etter pragmatisme:

1. **Del, ikke flytt** (enklest) — endre `visibility` fra `'private'` til `'workspace'`. Krever at meldingen allerede bor i mål-workspacet. Fungerer for "jobbe privat i fellesrommet", men ikke for å flytte fra personlig workspace til et delt.

2. **Kopier, ikke flytt** (anbefalt) — opprett ny node i mål-workspace, behold original i personlig. Lenke mellom dem med `COPIED_FROM`-edge. Enkelt, trygt, ingen referanseproblemer.

3. **Flytt atomisk** — endre `workspace_id` på node + alle avhengigheter i én transaksjon. Komplekst: `graph_edges`, `reply_to`-kjeder, `kanban_card_view`-referanser til kolonner i kilde-workspace. Ikke verdt kompleksiteten initialt.

**Anbefaling:** Start med (2). "Kopier til fellesrom" er en tydelig handling. Originalen forblir i personlig workspace som referanse.

### Personlig publisering (avhenger av artikkel-publisering)
Hvert personlig workspace har en implisitt publikasjon (feed). Når en tekst publiseres fra personlig workspace:
- Den får en `article_view` med slug og status
- Den blir tilgjengelig på `sidelinja.org/@brukernavn/slug`
- Den dukker opp i brukerens personlige Atom-feed
- En redaktør i en felles publikasjon kan kuratere den derfra (se `artikkel_publisering.md`)

## Åpne spørsmål

### Grense mot delte workspaces
- Kan et personlig workspace ha flere medlemmer (f.eks. invitere en kollega til å se kanban-brettet)? Eller er det strengt personlig?
- Pragmatisk: start strengt personlig (1 member). Utvid later hvis behov oppstår.

### Kvoter og vekst
- Eget lagringsbudsjett per personlig workspace?
- TTL-policy: samme som delte workspaces, eller mer liberal (personlig innhold slettes ikke automatisk)?
- Trolig: ingen TTL på personlig workspace som default. Brukeren styrer selv.

### Dashboard / startside
- Bør personlig workspace ha et dashboard? F.eks.:
  - Siste notater
  - Kommende kalenderhendelser
  - Kanban-kort med deadline
  - Siste aktivitet i delte workspaces brukeren er med i
- Eller er det overkill — bare vis verktøyene?

### Alternativ: "Visibility er nok"
Det kan fortsatt hende at `visibility = 'private'` i delte workspaces dekker 80% av behovet. Et personlig workspace er da mest relevant for:
- Innhold som ikke hører til noe delt workspace
- Personlig publisering
- Et "hjem" i appen

Verdt å evaluere etter at visibility og tekst-primitiven er på plass.

## Innsats: Lav (opprettelse) / Middels (med publisering og dashboard)
Workspace-opprettelse ved registrering er trivielt. Publiseringslaget avhenger av tekst-primitiv og artikkel-publisering. Dashboard er eget arbeid.

## Wow-faktor: Middels-Høy
Alene er det "et privat workspace". Med publisering blir det en personlig plattform — Substack-aktig, men integrert i redaksjonsverktøyet.

## Relasjon til andre proposals
- **Tekst-primitiv** — gir notater og kladder en skikkelig editor
- **Artikkel-publisering** — gir publiseringsmodellen (publikasjoner, kuratorer, feeds)
- Personlig workspace er *konteksten* der tekst-primitiven og publisering møtes for individet
