diff --git a/docs/primitiver/traits.md b/docs/primitiver/traits.md index 12fe8c8..c9c147e 100644 --- a/docs/primitiver/traits.md +++ b/docs/primitiver/traits.md @@ -136,6 +136,7 @@ Fravær av en trait betyr at funksjonaliteten er deaktivert. Ingen boolean | Trait | Frontend | Backend | |---|---|---| | `knowledge_graph` | Visuell graf, auto-tagging | NER, embedding-generering | +| `mindmap` | Radial/tree-layout av noder rundt rot, pan/zoom, dybde 1-3 hopp | Validering av konfig (dybde, layout) | | `wiki` | Slug-baserte sider, kryssreferanser, "finnes ikke ennå"-lenker | Slug-unikhet, backlink-indeks | | `glossary` | Begrepsliste, hover-definisjoner i annet innhold | Begrep-matching i tekst | | `faq` | Spørsmål/svar-par med søk | Søkeindeksering | @@ -180,9 +181,9 @@ Brukeren kan legge til eller fjerne traits etterpå. | Pakke | Traits | |---|---| | **Nettmagasin** | editor(longform), publishing, rss, comments, analytics, custom_domain, newsletter | -| **Podcaststudio** | podcast, recording, transcription, mixer, editor(shownotes), rss, analytics, clips, knowledge_graph | +| **Podcaststudio** | podcast, recording, transcription, mixer, editor(shownotes), rss, analytics, clips, knowledge_graph, mindmap | | **Nyhetsbrev** | editor(longform), newsletter, analytics, versioning | -| **Wiki** | wiki, editor(longform), collaboration, versioning, knowledge_graph, glossary | +| **Wiki** | wiki, editor(longform), collaboration, versioning, knowledge_graph, mindmap, glossary | | **Diskusjonsklubb** | forum, chat, polls, membership, roles, directory | | **Kursplattform** | editor(longform), playlist, qa, membership, paywall, templates | | **Møteplass** | recording, mixer, chat, kanban, calendar, auto_summarize, guest_input | diff --git a/frontend/src/lib/traits.ts b/frontend/src/lib/traits.ts index d30678e..0b3daf1 100644 --- a/frontend/src/lib/traits.ts +++ b/frontend/src/lib/traits.ts @@ -58,6 +58,7 @@ export const packages: Package[] = [ analytics: {}, clips: {}, knowledge_graph: {}, + mindmap: { default_depth: 2, layout: 'radial' }, }, }, { @@ -83,6 +84,7 @@ export const packages: Package[] = [ collaboration: {}, versioning: {}, knowledge_graph: {}, + mindmap: { default_depth: 2, layout: 'tree' }, glossary: {}, }, }, diff --git a/maskinrommet/src/intentions.rs b/maskinrommet/src/intentions.rs index f85c54f..f4a05bf 100644 --- a/maskinrommet/src/intentions.rs +++ b/maskinrommet/src/intentions.rs @@ -42,7 +42,7 @@ const VALID_TRAITS: &[&str] = &[ // Organisering "kanban", "calendar", "timeline", "table", "gallery", "bookmarks", "tags", // Kunnskap - "knowledge_graph", "wiki", "glossary", "faq", "bibliography", + "knowledge_graph", "mindmap", "wiki", "glossary", "faq", "bibliography", // Automatisering & AI "auto_tag", "auto_summarize", "digest", "bridge", "moderation", "ai_tool", "orchestration", // Tilgang & fellesskap @@ -90,6 +90,25 @@ fn validate_collection_traits( )); } + // Valider mindmap-konfigurasjon: dybde 1-3, layout radial/tree + if let Some(mindmap) = traits_obj.get("mindmap") { + if let Some(depth) = mindmap.get("default_depth") { + if let Some(d) = depth.as_i64() { + if !(1..=3).contains(&d) { + return Err("mindmap.default_depth må være 1, 2 eller 3".to_string()); + } + } + } + if let Some(layout) = mindmap.get("layout").and_then(|v| v.as_str()) { + if layout != "radial" && layout != "tree" { + return Err(format!( + "mindmap.layout må være \"radial\" eller \"tree\", fikk \"{}\"", + layout + )); + } + } + } + // Valider custom_domain DNS hvis satt i publishing-trait if let Some(publishing) = traits_obj.get("publishing") { if let Some(domain) = publishing.get("custom_domain").and_then(|v| v.as_str()) { diff --git a/tasks.md b/tasks.md index ba602e3..10d42f3 100644 --- a/tasks.md +++ b/tasks.md @@ -363,8 +363,7 @@ visning av eksisterende grafdata. - [x] 27.1 MindMap Svelte-komponent: radial/tree-layout av noder rundt en rotnode. Hent relaterte noder (1-2 hopp) via WebSocket. d3-hierarchy eller trigonometri for layout. Pan/zoom via canvas-primitiv. Klikk node = ny rot, dobbeltklikk = åpne i editor. - [x] 27.2 BlockShell-panel: MindMap som BlockShell-panel i arbeidsflaten med fullskjerm, resize, drag-handle. Rotnode fra kontekst-header. Responsivt. -- [~] 27.3 MindMap-trait: `mindmap`-trait for samlingsnoder. Vises i trait-velger ved opprettelse. Konfigurasjon: default dybde (1-3 hopp), layout-stil (radial/tree). - > Påbegynt: 2026-03-18T19:40 +- [x] 27.3 MindMap-trait: `mindmap`-trait for samlingsnoder. Vises i trait-velger ved opprettelse. Konfigurasjon: default dybde (1-3 hopp), layout-stil (radial/tree). ## Fase 28: Manglende CLI-verktøy + AI-rutingskontroll