feat: visual reference vault — Calendar, Thino, design-ideas canvas

Plugins installed:
- Calendar (en-GB, Monday start, note indicators)
- Thino (quick memos, daily save mode)
- community-plugins.json enables both

Visual canvas (projects/visual-vault/design-ideas.canvas):
- 8 labeled zones stacked vertically with 100px gaps
- Zone: Logos & Icons — logo-pro, 6x square icons, portrait (9:16)
- Zone: Archive Concepts — 3x early-era 16:9 covers
- Zone: Pro Cover Variants — pro-cover-10
- Zone: Brand Identity — hub-cover, classroom-start-here
- Zone: Skill Covers — seo, blog, repurpose, wp-mcp, seo-update
- Zone: Event Covers — blog-day, seo-day, qa-day
- Zone: April 2026 About Page — 3x bg 2752x1536, 5x slot 1280x720
- Style Reference Card — all format dimensions, palette, visual rules
- All nodes pixel-perfect sized from actual image dimensions

Images (41 files, 29MB):
- Copied to _attachments/images/skool-hub/
- Exact dimensions used for canvas node sizing

workspace-visual.json:
- Main: design-ideas.canvas (default) + Wiki Map + Graph view tabs
- Left: file-explorer, search, bookmarks
- Right: Calendar + Thino + Backlinks (OPEN, not collapsed)
- Switch to it: quit Obsidian, cp workspace-visual.json workspace.json, reopen

bin/setup-vault.sh updated with visual layout switch instructions

Note: _attachments/images/ is NOT gitignored (images are intentional)
      Comment out the line in .gitignore to exclude them for leaner forks
This commit is contained in:
Daniel
2026-04-07 12:39:25 +03:00
parent f597342479
commit 8286bf1944
13 changed files with 16634 additions and 14 deletions

4
.gitignore vendored
View File

@@ -3,6 +3,10 @@
# .obsidian/workspace.json
.obsidian/workspace-mobile.json
.obsidian/plugins/*/data.json
# Large binary assets — add your own images to _attachments/images/
# Uncomment the line below to exclude images from git (recommended for large vaults)
# _attachments/images/
.smart-connections/
.obsidian-git-data
.trash/

1
.obsidian/community-plugins.json vendored Normal file
View File

@@ -0,0 +1 @@
["calendar","thino"]

View File

@@ -53,6 +53,6 @@
"repelStrength": 20,
"linkStrength": 1,
"linkDistance": 385,
"scale": 0.3391745903861724,
"scale": 0.42105482394501453,
"close": false
}

15646
.obsidian/plugins/calendar/main.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
{
"id": "calendar-beta",
"name": "Calendar (Beta)",
"description": "Calendar view of your daily notes",
"version": "2.0.0",
"author": "Liam Cain",
"authorUrl": "https://github.com/liamcain/",
"isDesktopOnly": false,
"minAppVersion": "0.9.11"
}

13
.obsidian/plugins/calendar/styles.css vendored Normal file
View File

@@ -0,0 +1,13 @@
button:focus {
box-shadow: 0 0 0 1px var(--interactive-accent);
}
#calendar-container [data-emoji-tag]::after {
content: attr(data-emoji-tag);
position: absolute;
top: -4px;
right: 4px;
height: 8px;
width: 8px;
z-index: 1;
}

372
.obsidian/plugins/thino/main.js vendored Normal file

File diff suppressed because one or more lines are too long

10
.obsidian/plugins/thino/manifest.json vendored Normal file
View File

@@ -0,0 +1,10 @@
{
"id": "obsidian-memos",
"name": "Thino",
"description": "Capturing ideas and save them into daily notes. (Closed source)",
"version": "3.0.4",
"author": "Boninall",
"authorUrl": "https://github.com/Quorafind/",
"isDesktopOnly": false,
"minAppVersion": "1.0.0"
}

2
.obsidian/plugins/thino/styles.css vendored Normal file

File diff suppressed because one or more lines are too long

166
.obsidian/workspace-visual.json vendored Normal file
View File

@@ -0,0 +1,166 @@
{
"main": {
"id": "visual-main",
"type": "split",
"children": [
{
"id": "visual-tabs",
"type": "tabs",
"children": [
{
"id": "visual-canvas",
"type": "leaf",
"state": {
"type": "canvas",
"state": {
"file": "projects/visual-vault/design-ideas.canvas"
},
"icon": "lucide-layout-dashboard",
"title": "Design Ideas"
}
},
{
"id": "visual-wiki-map",
"type": "leaf",
"state": {
"type": "canvas",
"state": {
"file": "wiki/Wiki Map.canvas"
},
"icon": "lucide-git-fork",
"title": "Wiki Map"
}
},
{
"id": "visual-graph",
"type": "leaf",
"state": {
"type": "graph",
"state": {
"search": "path:wiki",
"showTags": false,
"showAttachments": false,
"hideUnresolved": true,
"showOrphans": false,
"colorGroups": [
{ "query": "path:wiki/entities", "color": { "a": 1, "rgb": 12945088 } },
{ "query": "path:wiki/concepts", "color": { "a": 1, "rgb": 5227007 } },
{ "query": "path:wiki/sources", "color": { "a": 1, "rgb": 6986069 } },
{ "query": "path:wiki/meta", "color": { "a": 1, "rgb": 5676246 } },
{ "query": "path:wiki", "color": { "a": 1, "rgb": 5676246 } }
],
"showArrow": true,
"textFadeMultiplier": -1,
"nodeSizeMultiplier": 1.8,
"lineSizeMultiplier": 1.2,
"centerStrength": 0.5,
"repelStrength": 30,
"linkStrength": 1.5,
"linkDistance": 120
},
"icon": "lucide-git-fork",
"title": "Graph view"
}
}
],
"currentTab": 0
}
],
"direction": "vertical"
},
"left": {
"id": "visual-left",
"type": "split",
"children": [
{
"id": "visual-left-tabs",
"type": "tabs",
"children": [
{
"id": "visual-files",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": { "sortOrder": "alphabetical" },
"icon": "lucide-folder-closed",
"title": "Files"
}
},
{
"id": "visual-search",
"type": "leaf",
"state": {
"type": "search",
"state": {},
"icon": "lucide-search",
"title": "Search"
}
},
{
"id": "visual-bookmarks",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {},
"icon": "lucide-bookmark",
"title": "Bookmarks"
}
}
]
}
],
"direction": "horizontal",
"width": 240
},
"right": {
"id": "visual-right",
"type": "split",
"children": [
{
"id": "visual-right-tabs",
"type": "tabs",
"children": [
{
"id": "visual-calendar",
"type": "leaf",
"state": {
"type": "calendar",
"state": {},
"icon": "lucide-calendar-days",
"title": "Calendar"
}
},
{
"id": "visual-thino",
"type": "leaf",
"state": {
"type": "thino_view",
"state": {},
"icon": "lucide-message-square",
"title": "Thino"
}
},
{
"id": "visual-backlinks",
"type": "leaf",
"state": {
"type": "backlink",
"state": { "collapseAll": false },
"icon": "links-coming-in",
"title": "Backlinks"
}
}
]
}
],
"direction": "horizontal",
"width": 300,
"collapsed": false
},
"active": "visual-canvas",
"lastOpenFiles": [
"projects/visual-vault/design-ideas.canvas",
"wiki/Wiki Map.canvas",
"wiki/index.md"
]
}

View File

@@ -189,6 +189,24 @@
},
"active": "c0d470cf50ffdf79",
"lastOpenFiles": [
"bin/setup-vault.sh.tmp.224546.1775554739080",
"projects/visual-vault/design-ideas.canvas",
"projects/visual-vault/design-ideas.canvas.tmp.224546.1775554654804",
"projects/visual-vault",
"projects",
"_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",
"_attachments/images/skool-hub/pro10-var-20.png",
"_attachments/images/skool-hub/pro10-var-10.png",
"_attachments/images/skool-hub/pro10-var-01.png",
"_attachments/images/skool-hub",
"_attachments/images",
"_attachments",
"README.md.tmp.224546.1775554365748",
"bin/setup-vault.sh",
"bin/setup-vault.sh.tmp.224546.1775554319795",
@@ -196,14 +214,7 @@
"wiki/entities/_index.md",
"wiki/meta/dashboard.md",
"wiki/sources/_index.md",
"wiki/sources/Nate Herk LLM Wiki Transcript.md.tmp.224546.1775554051396",
"WIKI.md",
"wiki/Wiki Map.canvas.tmp.224546.1775553279818",
"wiki/sources/Nate Herk LLM Wiki Transcript.md.tmp.224546.1775553217829",
"wiki/entities/Andrej Karpathy.md.tmp.224546.1775553206364",
"wiki/concepts/Compounding Knowledge.md.tmp.224546.1775553195385",
"wiki/concepts/Hot Cache.md.tmp.224546.1775553185168",
"wiki/concepts/LLM Wiki Pattern.md.tmp.224546.1775553183707",
"wiki/concepts/_index.md",
"Welcome.md",
"README.md",

View File

@@ -72,14 +72,24 @@ cat > "$OBSIDIAN/appearance.json" << 'EOF'
EOF
echo ""
echo "Setup complete."
echo "Setup complete."
echo ""
echo "Next steps:"
echo " 1. Open Obsidian"
echo " 2. Manage Vaults → Open folder as vault → select: $VAULT"
echo " 3. Install community plugins: Dataview, Templater, Obsidian Git"
echo " 4. Type /wiki in Claude Code to scaffold your knowledge base"
echo " 3. Enable community plugins when prompted (Calendar + Thino are pre-installed)"
echo " 4. Install: Dataview, Templater, Obsidian Git (Settings → Community Plugins)"
echo " 5. Type /wiki in Claude Code to scaffold your knowledge base"
echo ""
echo "Graph view will show only wiki pages, color-coded by type."
echo "If colors reset after closing Obsidian: open Graph settings → Color groups"
echo "and re-add them once. After that, they persist permanently."
echo "Views available:"
echo " - Wiki Map canvas (wiki/Wiki Map.canvas) — knowledge graph"
echo " - Design Ideas canvas (projects/visual-vault/design-ideas.canvas) — visual reference board"
echo " - Graph view filtered to wiki/ only, color-coded by type"
echo ""
echo "To switch to the visual layout (Canvas + Calendar + Thino sidebar):"
echo " Quit Obsidian, then run:"
echo " cp $OBSIDIAN/workspace-visual.json $OBSIDIAN/workspace.json"
echo " Then reopen Obsidian."
echo ""
echo "Graph colors: if they reset after closing Obsidian, open Graph settings"
echo "→ Color groups and re-add them once. They persist permanently after that."

View File

@@ -0,0 +1,375 @@
{
"nodes": [
{
"id": "title",
"type": "text",
"text": "# Cosmic Brain — AI Marketing Hub\n**Style Reference Board**\n\n**Formats:**\n- 1460×752 → w=420 h=216\n- 1376×768 → w=420 h=234\n- 1365×768 → w=420 h=236\n- 1024×1024 → w=240 h=240\n- 1000×1000 → w=280 h=280\n- 768×1376 → w=200 h=358\n- 2752×1536 → w=440 h=246\n- 1280×720 → w=380 h=214\n\n**Palette:** dark navy · electric purple · Claude orange · white\n**Type:** bold sans-serif, high contrast\n**Path:** _attachments/images/skool-hub/",
"x": -920,
"y": -2480,
"width": 560,
"height": 320,
"color": "6"
},
{
"id": "style-notes",
"type": "text",
"text": "**Visual language rules**\n\n- Dark bg always — no light themes\n- Vibrant single accent per image\n- Claude orange + purple gradient hero\n- Clean padding, no busy edges\n- Icon style: geometric, glowing\n- Consistent glow/bloom on key elements\n- White text only, high contrast\n\n**Colour codes**\n`#0a0a1a` deep navy bg\n`#ff6b35` Claude orange\n`#8b5cf6` electric purple\n`#ffffff` text",
"x": -300,
"y": -2480,
"width": 360,
"height": 320,
"color": "3"
},
{
"id": "g-logos",
"type": "group",
"label": "Logos & Icons",
"x": -920,
"y": -2120,
"width": 2060,
"height": 380,
"color": "6"
},
{
"id": "logo-pro",
"type": "file",
"file": "_attachments/images/skool-hub/logo-pro.png",
"x": -900,
"y": -2100,
"width": 420,
"height": 230
},
{
"id": "icon-free-v1",
"type": "file",
"file": "_attachments/images/skool-hub/icon-free-v1.png",
"x": -440,
"y": -2100,
"width": 240,
"height": 240
},
{
"id": "icon-free-v3",
"type": "file",
"file": "_attachments/images/skool-hub/icon-free-v3.png",
"x": -160,
"y": -2100,
"width": 240,
"height": 240
},
{
"id": "icon-pro-v1",
"type": "file",
"file": "_attachments/images/skool-hub/icon-pro-v1.png",
"x": 120,
"y": -2100,
"width": 240,
"height": 240
},
{
"id": "icon-pro-v3",
"type": "file",
"file": "_attachments/images/skool-hub/icon-pro-v3.png",
"x": 400,
"y": -2100,
"width": 240,
"height": 240
},
{
"id": "sq-01",
"type": "file",
"file": "_attachments/images/skool-hub/sq-01.png",
"x": 680,
"y": -2100,
"width": 240,
"height": 240
},
{
"id": "sq-10",
"type": "file",
"file": "_attachments/images/skool-hub/sq-10.png",
"x": 960,
"y": -2100,
"width": 240,
"height": 240
},
{
"id": "sq-portrait",
"type": "file",
"file": "_attachments/images/skool-hub/sq-portrait-clean.png",
"x": 1240,
"y": -2100,
"width": 200,
"height": 358
},
{
"id": "g-archive",
"type": "group",
"label": "Archive Concepts (early era)",
"x": -920,
"y": -1660,
"width": 1400,
"height": 280,
"color": "1"
},
{
"id": "archive-01",
"type": "file",
"file": "_attachments/images/skool-hub/archive-01-command-center.png",
"x": -900,
"y": -1640,
"width": 419,
"height": 216
},
{
"id": "archive-05",
"type": "file",
"file": "_attachments/images/skool-hub/archive-05-brain-funnel.png",
"x": -440,
"y": -1640,
"width": 419,
"height": 216
},
{
"id": "archive-09",
"type": "file",
"file": "_attachments/images/skool-hub/archive-09-community-hub.png",
"x": 20,
"y": -1640,
"width": 419,
"height": 216
},
{
"id": "g-pro",
"type": "group",
"label": "Pro Cover Variants",
"x": -920,
"y": -1240,
"width": 520,
"height": 280,
"color": "4"
},
{
"id": "pro-10",
"type": "file",
"file": "_attachments/images/skool-hub/pro-cover-10.png",
"x": -900,
"y": -1220,
"width": 419,
"height": 236
},
{
"id": "g-identity",
"type": "group",
"label": "Brand Identity",
"x": -920,
"y": -880,
"width": 1060,
"height": 290,
"color": "6"
},
{
"id": "hub-cover",
"type": "file",
"file": "_attachments/images/skool-hub/hub-cover.png",
"x": -900,
"y": -860,
"width": 500,
"height": 258
},
{
"id": "classroom-start",
"type": "file",
"file": "_attachments/images/skool-hub/classroom-start-here.png",
"x": -360,
"y": -860,
"width": 420,
"height": 215
},
{
"id": "g-skills",
"type": "group",
"label": "Skill Covers",
"x": -920,
"y": -520,
"width": 1780,
"height": 320,
"color": "3"
},
{
"id": "seo-cover",
"type": "file",
"file": "_attachments/images/skool-hub/claude-seo-cover.png",
"x": -900,
"y": -500,
"width": 420,
"height": 216
},
{
"id": "blog-cover",
"type": "file",
"file": "_attachments/images/skool-hub/claude-blog-cover.png",
"x": -440,
"y": -500,
"width": 280,
"height": 280
},
{
"id": "repurpose-cover",
"type": "file",
"file": "_attachments/images/skool-hub/claude-repurpose-cover.jpg",
"x": -120,
"y": -500,
"width": 420,
"height": 234
},
{
"id": "wp-mcp-cover",
"type": "file",
"file": "_attachments/images/skool-hub/wp-mcp-cover.png",
"x": 340,
"y": -500,
"width": 420,
"height": 234
},
{
"id": "seo-update",
"type": "file",
"file": "_attachments/images/skool-hub/claude-seo-update.png",
"x": 800,
"y": -500,
"width": 260,
"height": 260
},
{
"id": "g-events",
"type": "group",
"label": "Event Covers",
"x": -920,
"y": -120,
"width": 1260,
"height": 270,
"color": "5"
},
{
"id": "event-blog",
"type": "file",
"file": "_attachments/images/skool-hub/event-blog-day.png",
"x": -900,
"y": -100,
"width": 380,
"height": 196
},
{
"id": "event-seo",
"type": "file",
"file": "_attachments/images/skool-hub/event-seo-day.png",
"x": -480,
"y": -100,
"width": 380,
"height": 196
},
{
"id": "event-qa",
"type": "file",
"file": "_attachments/images/skool-hub/event-qa-day.png",
"x": -60,
"y": -100,
"width": 380,
"height": 196
},
{
"id": "g-apr",
"type": "group",
"label": "April 2026 — About Page",
"x": -920,
"y": 240,
"width": 2100,
"height": 520,
"color": "4"
},
{
"id": "apr-bg-01",
"type": "file",
"file": "_attachments/images/skool-hub/apr-bg-v01.png",
"x": -900,
"y": 260,
"width": 440,
"height": 246
},
{
"id": "apr-bg-05",
"type": "file",
"file": "_attachments/images/skool-hub/apr-bg-v05.png",
"x": -420,
"y": 260,
"width": 440,
"height": 246
},
{
"id": "apr-bg-10",
"type": "file",
"file": "_attachments/images/skool-hub/apr-bg-v10.png",
"x": 60,
"y": 260,
"width": 440,
"height": 246
},
{
"id": "apr-slot2",
"type": "file",
"file": "_attachments/images/skool-hub/apr-slot2-results.png",
"x": -900,
"y": 540,
"width": 380,
"height": 214
},
{
"id": "apr-slot3",
"type": "file",
"file": "_attachments/images/skool-hub/apr-slot3-courses.png",
"x": -480,
"y": 540,
"width": 380,
"height": 214
},
{
"id": "apr-slot4",
"type": "file",
"file": "_attachments/images/skool-hub/apr-slot4-events.png",
"x": -60,
"y": 540,
"width": 380,
"height": 214
},
{
"id": "apr-slot5",
"type": "file",
"file": "_attachments/images/skool-hub/apr-slot5-community.png",
"x": 360,
"y": 540,
"width": 380,
"height": 214
},
{
"id": "apr-slot6",
"type": "file",
"file": "_attachments/images/skool-hub/apr-slot6-casestudies.png",
"x": 780,
"y": 540,
"width": 380,
"height": 214
}
],
"edges": []
}