Fjern gjenværende v2-referanser, dokumenter editor og tekstlagring
Rydder opp siste «v2»-referanser i docs (status_quo, migration_safety, personlig_workspace, spacetimedb_integrasjon). Legger til editor-seksjon i universell_input.md (TipTap, presets, tekstlagring) og oppdaterer nodes.md med content/metadata.document-modellen. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
00bf5d27ce
commit
c1d3ad66a5
7 changed files with 8947 additions and 12 deletions
|
|
@ -150,7 +150,7 @@ PG-polling adapter (`pg.svelte.ts`) brukes kun når SpacetimeDB ikke er konfigur
|
|||
## 8. Reducer-parameternavn — unngå underscore-prefix
|
||||
|
||||
> *Kodeeksemplene i denne seksjonen er fra v1 og bruker `workspace_id`-parametere.
|
||||
> I v2 er workspace-modellen erstattet av noder og edges (se `docs/retninger/bruker_ikke_workspace.md`),
|
||||
> Workspace-modellen er erstattet av noder og edges (se `docs/retninger/bruker_ikke_workspace.md`),
|
||||
> men lærdommen om underscore-prefix gjelder generelt for alle SpacetimeDB-reducere.*
|
||||
|
||||
SpacetimeDB eksponerer Rust-parameternavn direkte i HTTP JSON API-et. Underscore-prefix (`_workspace_id`) blir til `_workspace_id` i JSON, ikke `workspace_id`:
|
||||
|
|
|
|||
|
|
@ -62,27 +62,37 @@ navnet på en podcast.
|
|||
- Chatmelding: `NULL` (har sjelden tittel)
|
||||
|
||||
### `content`
|
||||
Primært tekstinnhold. Det du leser, søker i, viser i detalj.
|
||||
Blogginnhold, chatmeldinger, transkripsjoner.
|
||||
Ren tekst uten formatering. Brukes til fulltekstsøk og enkel
|
||||
visning. For rike dokumenter (formatert tekst med bilder) genereres
|
||||
`content` automatisk fra `metadata.document` ved lagring.
|
||||
|
||||
- Bloggpost: hele artikkelen
|
||||
- Bloggpost: teksten uten markup (generert fra `metadata.document`)
|
||||
- Chatmelding: `'Hei, er du klar?'`
|
||||
- Voice memo: `NULL` ved opprettelse, fylles etter transkribering
|
||||
- Brukernode: `NULL`
|
||||
- CAS-node: `NULL` (binærdata lever på disk)
|
||||
|
||||
For formatert innhold: se `metadata.document` under metadata.
|
||||
|
||||
### `visibility`
|
||||
Default synlighet for alle uten eksplisitt edge.
|
||||
Se [noder er sentrum](../retninger/bruker_ikke_workspace.md)
|
||||
for full spesifikasjon av visibility-nivåer og traverseringsregelen.
|
||||
|
||||
### `metadata`
|
||||
JSONB for alt typespesifikt som ikke er tittel eller tekstinnhold:
|
||||
JSONB for alt typespesifikt som ikke er tittel eller ren tekst:
|
||||
|
||||
- Person: `{ "display_name": "Vegard", "preferences": { ... } }`
|
||||
- CAS-node: `{ "cas_hash": "abc123", "mime": "audio/mp3", "size_bytes": 84000000 }`
|
||||
- Kommunikasjonsnode: `{ "started_at": "...", "ended_at": "..." }`
|
||||
- Samlings-node: `{ "pruning_profile": "conservative", "theme": "dark" }`
|
||||
- Rikt dokument: `{ "document": { "type": "doc", "content": [...] } }`
|
||||
|
||||
`metadata.document` inneholder TipTap/ProseMirror JSON for formatert
|
||||
innhold (overskrifter, bilder, blockquotes, etc.). Bilder refererer
|
||||
til CAS-noder via `node_id`. For enkle meldinger (ren tekst) er
|
||||
`document` null — `content` er alt som trengs. Se
|
||||
[universell input](../retninger/universell_input.md) for detaljer.
|
||||
|
||||
### `created_at`
|
||||
Tidsstempel, automatisk.
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
# Forslag: Personlig workspace
|
||||
|
||||
> **Superseded (v2):** Dette forslaget er erstattet av retningen
|
||||
> **Superseded:** 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:
|
||||
> 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.
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
> **Historisk dokument (v1).** Denne teksten beskriver tilstanden i v1 —
|
||||
> workspace-basert arkitektur, CRUD-mønster, fragmentert navigasjon.
|
||||
> Den er bevart som referanse for å forstå utgangspunktet for v2-retningene
|
||||
> i `docs/retninger/`.
|
||||
> Den er bevart som referanse for å forstå utgangspunktet for de vedtatte
|
||||
> retningene i `docs/retninger/`.
|
||||
|
||||
> En redaksjonell webapp med ambisiøse primitiver og tradisjonell overflate.
|
||||
|
||||
|
|
|
|||
|
|
@ -46,6 +46,80 @@ All UX-investering konsentreres ett sted. Én perfekt input-opplevelse
|
|||
— responsiv, multimodal, med god AI-støtte — i stedet for ti
|
||||
middelmådige spesialgrensesnitt.
|
||||
|
||||
## Editoren
|
||||
|
||||
Input-komponenten er en TipTap-editor (ProseMirror-basert) som
|
||||
konfigureres med ulike extensions basert på kontekst.
|
||||
|
||||
### Kontekst setter default, brukeren bestemmer
|
||||
|
||||
Konteksten (kommunikasjonsnoden du er i, visningen du bruker)
|
||||
setter en *default* editor-konfigurasjon. Men brukeren kan alltid
|
||||
overstyre — utvide til full editor eller forenkle. Ingen kunstig
|
||||
grense mellom "chatmelding" og "artikkel."
|
||||
|
||||
Du *kan* skrive en gjennomformatert tekst med overskrifter, bilder
|
||||
og blockquotes i chatten. Om du vil publisere den etterpå er det
|
||||
bare å legge til en publiserings-edge. Innholdet er det samme.
|
||||
|
||||
Editoren husker brukerens valg per kontekst via preferanser på
|
||||
brukernoden.
|
||||
|
||||
### Presets
|
||||
|
||||
| Kontekst | Default extensions | Eksempel |
|
||||
|----------|-------------------|----------|
|
||||
| Chat | Tekst, markdown, kodeblokker, lenker | Enkel melding |
|
||||
| Artikkel/blogg | + overskrifter, bilder, embeds, blockquotes, tabeller | Publisert tekst |
|
||||
| Show notes | + lister, tidskoder, lenker | Episodenotater |
|
||||
| Kanban-kort | Tekst, sjekklister | Oppgavebeskrivelse |
|
||||
|
||||
Presets er bare default — brukeren kan utvide eller forenkle med
|
||||
en knapp eller tastatursnarvei. Ikke en modebytte, bare at flere
|
||||
verktøy blir tilgjengelig.
|
||||
|
||||
### Tekstlagring
|
||||
|
||||
Noden lagrer to representasjoner:
|
||||
|
||||
- `content TEXT` — ren tekst uten formatering, for fulltekstsøk
|
||||
og enkel visning
|
||||
- `metadata.document JSONB` — strukturert TipTap/ProseMirror-
|
||||
dokument for rendering
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
{ "type": "paragraph", "content": [
|
||||
{ "type": "text", "text": "Her er en intro." }
|
||||
]},
|
||||
{ "type": "image", "attrs": {
|
||||
"node_id": "uuid-av-cas-node", "alt": "Diagram"
|
||||
}},
|
||||
{ "type": "paragraph", "content": [
|
||||
{ "type": "text", "text": "Teksten fortsetter." }
|
||||
]}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
`content` genereres automatisk fra dokumentet ved lagring — bare
|
||||
teksten, uten markup. Editoren produserer begge.
|
||||
|
||||
For enkle meldinger (ren tekst uten formatering) er
|
||||
`metadata.document` null — `content` er alt som trengs.
|
||||
|
||||
### Bilder og media i tekst
|
||||
|
||||
Bilder i dokumentet refererer til CAS-noder via `node_id`.
|
||||
CAS-noden er en egen node med `has_media`-edge til innholdsnoden.
|
||||
Dokumentstrukturen bestemmer *hvor* bildet plasseres i teksten.
|
||||
|
||||
Tekst er *på* noden. Binærfiler er *andre* noder koblet med edges.
|
||||
Ren separasjon: tekst er innhold, binærfiler er vedlegg som kan
|
||||
plasseres inline.
|
||||
|
||||
## Edges definerer alt
|
||||
|
||||
Hva en node "er" bestemmes utelukkende av edges:
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
# Migration Safety Checklist
|
||||
|
||||
> **Merk (v2):** Denne sjekklisten er skrevet for v1-arkitekturen der RLS var
|
||||
> basert på `workspace_id`-kolonner og `SET app.current_workspace_id`. I v2 er
|
||||
> workspace-modellen erstattet av en node-basert tilgangsmatrise (se
|
||||
> **Merk:** Denne sjekklisten er skrevet for v1-arkitekturen der RLS var
|
||||
> basert på `workspace_id`-kolonner og `SET app.current_workspace_id`.
|
||||
> Workspace-modellen er erstattet av en node-basert tilgangsmatrise (se
|
||||
> `docs/retninger/bruker_ikke_workspace.md`). Sjekklisten må skrives om for
|
||||
> det nye mønsteret: `node_access`-matrise, edge-basert tilgang, og
|
||||
> RLS-policies som opererer på bruker→node-edges i stedet for workspace-scope.
|
||||
|
|
|
|||
8851
scripts/synops.md
Normal file
8851
scripts/synops.md
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue