# Forslag: Personlig workspace > **Superseded (v2):** Dette forslaget er erstattet av retningen > "noder er sentrum" (se `docs/retninger/bruker_ikke_workspace.md`). > I v2 finnes det 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