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>
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 på 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- oguses-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-servicedocs/concepts/orkestrering.md—observes-edge fra header-drop