Files
personal-wiki/.obsidian/workspace.json
Daniel 3b4f62eb0c feat: /canvas command — visual layer of the wiki
New files:
  commands/canvas.md              — slash command with full trigger table
  skills/canvas/SKILL.md          — complete skill: open, new, add image/text/pdf/note,
                                    zone, list, from-banana operations
  skills/canvas/references/canvas-spec.md — Obsidian canvas JSON spec:
                                    coordinate system, all node types, color table,
                                    image sizing by aspect ratio, auto-positioning
                                    pseudocode, common mistakes, full example

Auto-positioning algorithm (bbox math):
  - Finds rightmost node in target zone
  - Places next node at rightmost_x + 40, same row y
  - If overflow: wraps to new row (max_y_in_zone + 20)
  - Falls back to below all content if no zone found

Banana integration:
  - /canvas from banana: checks .recent-images.txt first, then
    filesystem find -newer 10min, presents list for confirmation
  - After any /banana run: suggests /canvas from banana

Updated:
  skills/wiki/SKILL.md        — added /canvas to routing table
  skills/wiki/references/plugins.md — added Calendar + Thino with
                                      pre-installed note + manual install fallback
  README.md                   — /canvas in commands table + file structure
2026-04-07 13:23:33 +03:00

242 lines
6.7 KiB
JSON

{
"main": {
"id": "cb698273c33e48de",
"type": "split",
"children": [
{
"id": "477f1cf965ca606e",
"type": "tabs",
"children": [
{
"id": "a31de1b302cdc5cf",
"type": "leaf",
"state": {
"type": "graph",
"state": {},
"icon": "lucide-git-fork",
"title": "Graph view"
}
}
]
}
],
"direction": "vertical"
},
"left": {
"id": "db8d83ac47ae599f",
"type": "split",
"children": [
{
"id": "554fd2b4fa6f8741",
"type": "tabs",
"children": [
{
"id": "5565f1231fe95c42",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical",
"autoReveal": false
},
"icon": "lucide-folder-closed",
"title": "Files"
}
},
{
"id": "832ab43d08cf9e30",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
},
"icon": "lucide-search",
"title": "Search"
}
},
{
"id": "097e8347bb8aa054",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {},
"icon": "lucide-bookmark",
"title": "Bookmarks"
}
}
]
}
],
"direction": "horizontal",
"width": 300
},
"right": {
"id": "7092b65be1e76349",
"type": "split",
"children": [
{
"id": "9f4de9402eae371b",
"type": "tabs",
"children": [
{
"id": "a32b7215b7814fbb",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-coming-in",
"title": "Backlinks"
}
},
{
"id": "7936f8ba26007091",
"type": "leaf",
"state": {
"type": "outgoing-link",
"state": {
"linksCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-going-out",
"title": "Outgoing links"
}
},
{
"id": "ed8ccb323a603d61",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-tags",
"title": "Tags"
}
},
{
"id": "b140a331162907cf",
"type": "leaf",
"state": {
"type": "all-properties",
"state": {
"sortOrder": "frequency",
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-archive",
"title": "All properties"
}
},
{
"id": "111a21e12ab1a293",
"type": "leaf",
"state": {
"type": "outline",
"state": {
"followCursor": false,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-list",
"title": "Outline"
}
},
{
"id": "20a272e103b5d792",
"type": "leaf",
"state": {
"type": "calendar",
"state": {},
"icon": "calendar-with-checkmark",
"title": "Calendar"
}
}
]
}
],
"direction": "horizontal",
"width": 300,
"collapsed": true
},
"left-ribbon": {
"hiddenItems": {
"switcher:Open quick switcher": false,
"graph:Open graph view": false,
"canvas:Create new canvas": false,
"daily-notes:Open today's daily note": false,
"templates:Insert template": false,
"command-palette:Open command palette": false,
"bases:Create new base": false,
"obsidian-memos:Thino": false,
"obsidian-memos:Thino Super": false
}
},
"active": "a31de1b302cdc5cf",
"lastOpenFiles": [
"README.md.tmp.224546.1775557396282",
"README.md.tmp.224546.1775557389171",
"README.md.tmp.224546.1775557379648",
"skills/wiki/references/plugins.md.tmp.224546.1775557354797",
"skills/wiki/SKILL.md.tmp.224546.1775557343437",
"skills/canvas/references/canvas-spec.md",
"skills/canvas/references/canvas-spec.md.tmp.224546.1775557327401",
"skills/canvas/SKILL.md",
"skills/canvas/SKILL.md.tmp.224546.1775557280886",
"commands/canvas.md",
"commands/canvas.md.tmp.224546.1775557227716",
"wiki/canvases",
"skills/canvas/references",
"skills/canvas",
"wiki/comparisons/Wiki vs RAG.md",
"wiki/questions/How does the LLM Wiki pattern work.md",
"wiki/meta/workflow-loop.gif",
"wiki/meta/wiki-graph-grow.gif",
"cover.gif",
"projects/visual-vault/design-ideas.canvas",
"_attachments/images/skool-hub/wp-mcp-cover.png",
"_attachments/images/skool-hub/v3-cover-10.png",
"_attachments/images/skool-hub/v3-cover-05.png",
"_attachments/images/skool-hub/v3-cover-01.png",
"_attachments/images/skool-hub/sq-portrait-clean.png",
"_attachments/images/skool-hub/sq-10.png",
"_attachments/images/skool-hub/sq-01.png",
"wiki/entities/_index.md",
"wiki/meta/dashboard.md",
"wiki/sources/_index.md",
"WIKI.md",
"wiki/concepts/_index.md",
"Welcome.md",
"README.md",
"CLAUDE.md",
"wiki/sources/Nate Herk LLM Wiki Transcript.md",
"wiki/entities/Andrej Karpathy.md",
"wiki/concepts/LLM Wiki Pattern.md",
"wiki/concepts/Hot Cache.md",
"wiki/concepts/Compounding Knowledge.md",
"wiki/overview.md",
"wiki/log.md",
"wiki/index.md",
"wiki/hot.md",
"wiki/Wiki Map.canvas",
"skills/wiki/references/rest-api.md",
"skills/wiki/references/plugins.md",
"skills/wiki/references/modes.md"
]
}