synops/docs/retninger/interaksjonsmodell.md
vegard e0988711d8 Spesifiser interaksjonsmodell: drag-and-drop som universell grammatikk
Ny retning som formaliserer Synops sin interaksjonsfilosofi:
- Inn=transformer, ut=skap nytt (to retninger)
- Body=engang, header=vedvarende (to mål)
- Konsistent overalt: AI, orkestrering, tema, lyd, kalender
- Visuell feedback med to drop-soner (grønn=engang, blå=vedvarende)
- Fire prinsipper: reversibilitet, konsistens, synlighet, gradvis dybde

Også: observes-edge i orkestrering og edges.md for eksplisitt
kobling mellom orkestrering og observerte noder.

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

6.4 KiB

Interaksjonsmodell — drag-and-drop som grammatikk

Status: Besluttet.

Drag-and-drop er Synops sitt universelle verb. Hva som skjer bestemmes av hva du drar, hva du slipper på, og hvor du slipper. To retninger, to mål. Konsistent overalt.

Observasjon

Synops har mange verktøy: AI-presets, orkestreringer, editorer, lydstudio, kanban. De interagerer alle med noder. Men interaksjonen følger alltid samme mønster — og det mønsteret bør være så intuitivt at det ikke trenger forklaring.

Grammatikken

Drag-and-drop er en setning:

  • Subjekt: det du drar
  • Objekt: det du slipper på
  • Verb: bestemt av hvor du slipper

To retninger

Retning Hva skjer
Inn (verktøy → node) Verktøyet virker noden
Ut (node → verktøy) Noden sendes gjennom verktøyet

Inn = transformer. Ut = skap noe nytt.

To mål

Mål Hva endres
Innhold (body) Denne ene tingen
Container (header) Alle ting i denne containeren

Body = engangsakjson. Header = vedvarende oppførsel.

Matrisen

                    Mål: innhold (body)        Mål: container (header)
                    ─────────────────          ──────────────────────
Inn (verktøy→node)  Transformer denne          Transformer oppførselen
Ut  (node→verktøy)  Skap noe nytt              —

Eksempler

AI-preset

Handling Resultat Edge
AI-preset → chatboble Prosesser den meldingen derived_from
AI-preset → chat-header Prosesser alle meldinger heretter observes
Chatboble → AI-preset Ny node med AI-output source_material

Orkestrering

Handling Resultat Edge
Orkestrering → chatboble Kjør på den meldingen derived_from
Orkestrering → chat-header Aktiver automatisering for chatten observes
Chatboble → orkestrering Ny kjøring med boblen som input source_material

Tema (publisering)

Handling Resultat Edge
Tema → artikkel Style denne artikkelen oppdater metadata
Tema → samling-header Style alle artikler i samlingen uses

Lydfil

Handling Resultat Edge
Lydfil → lydstudio Åpne filen i studio — (navigasjon)
Lydfil → chat Del lydfilen i samtalen has_media
Chat-melding → lydstudio Ny studio-sesjon med meldingen som kilde source_material

Kalender

Handling Resultat Edge
Node → kalender-slot Planlegg noden scheduled
Kalender-event → kanban Oppgave fra kalenderhendelse source_material

Visuell feedback

Brukeren må se hva som skjer før de slipper. To distinkte drop-soner med ulik visuell respons:

Drar orkestrering mot chat:

  ┌─ #Redaksjonen ────── [header lyser opp: blå] ──┐
  │  "Slipp her for å aktivere automatisering"      │
  │                                                 │
  │  Melding 1                                      │
  │  Melding 2       [body lyser opp: grønn]        │
  │  Melding 3       "Slipp her for å kjøre én gang"│
  └─────────────────────────────────────────────────┘

Fargekoder

Drop-sone Farge Betydning
Body (innhold) Grønn Engangsaksjoner, trygt
Header (container) Blå Vedvarende endring, mer permanent
Inkompatibel Rød/dimmet Kan ikke slippe her

Inkompatibilitet

Ikke alt kan dras overalt. Kompatibilitetsmatrisen (se docs/features/universell_overfoering.md) bestemmer hva som er lovlig. Ved inkompatibilitet:

  • Drop-sonen dimmes
  • Kort forklaring vises: "Lydfiler kan ikke dras til kalender"
  • Ingen aksjon ved slipp

Edge-typer fra interaksjon

Interaksjon Edge Varighet
Verktøy → innhold derived_from Permanent (transformasjon logges)
Innhold → verktøy source_material Permanent (proveniens)
Verktøy → header observes / uses Vedvarende (fjernbar)
Innhold → container belongs_to Vedvarende (flyttbar)
Innhold → tidslinje scheduled Vedvarende (fjernbar)

Alle edges er synlige i grafen og kan fjernes. Ingen skjulte koblinger.

Prinsippet om reversibilitet

Enhver drag-and-drop-handling er reverserbar:

  • Engangstransformasjon: Original bevart som revisjon. "Vis forrige versjon" tilgjengelig.
  • Vedvarende kobling: Fjern edgen. Høyreklikk → "Fjern automatisering" / "Fjern kobling".
  • Ny node: Slett noden. Source_material-edge forsvinner.

Brukeren skal aldri føle at de kan gjøre noe uopprettelig ved å dra feil.

Prinsippet om konsistens

Samme handling gir alltid samme type resultat, uavhengig av hvilke verktøy som er involvert:

  • Inn + body = transformer — alltid, overalt
  • Inn + header = endre oppførsel — alltid, overalt
  • Ut = ny node — alltid, overalt

Ingen spesialtilfeller. Ingen "dette verktøyet fungerer annerledes". Brukeren lærer mønsteret én gang.

Prinsippet om synlighet

Brukeren ser alltid:

  • Hva som er koblet: observes- og uses-edges vises diskret i headeren (små ikoner for aktive automatiseringer)
  • Hva som skjedde: Transformasjoner logges med derived_from-edge, synlig i node-historikk
  • Hva som er mulig: Drop-soner lyser opp med forklaring

Ingen usynlig magi. Systemet er transparent.

Prinsippet om gradvis dybde

Overflaten er enkel:

  • Dra ting rundt. Slipp dem på andre ting. Se hva som skjer.

Dybden er tilgjengelig:

  • Se edges i grafvisning
  • Konfigurer orkestreringer med fritekst
  • Bygg kaskader mellom automatiseringer

Men du trenger aldri dybden for å bruke systemet. Det bare fungerer når du drar og slipper.

Forhold til andre retninger

  • Arbeidsflaten — spatial canvas der drag-and-drop skjer
  • Universell input og mottak — nodene som dras og slippes
  • Unix-filosofi — verktøyene som utfører transformasjonene
  • docs/features/universell_overfoering.md — kompatibilitets- matrise og transfer-service
  • docs/concepts/orkestrering.mdobserves-edge fra header-drop