Skip to content

Commit 410b011

Browse files
committed
fix: content cleanup, version switcher component, ontology links
- v3.4 architecture: replaced CK_Core/Cat/kernel.js with Three Loops - v3.4 quickstart: removed non-existent conceptkernel-python repo, added coming soon - Front page: canvas node animation replacing feature rectangles - Version switcher: Vue component reads current route, shows stable/alpha badges - Ontology index pages for /ontology/v3.4/ and /ontology/v3.5/ static dirs - Ontology links added to both sidebars - Removed static version dropdown from nav (component handles it)
1 parent 601055d commit 410b011

11 files changed

Lines changed: 562 additions & 254 deletions

File tree

docs/.vitepress/config.mts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export default withMermaid(defineConfig({
3131
{ text: 'Docs', link: '/v3.4/introduction' },
3232
{ text: 'Architecture', link: '/v3.4/architecture' },
3333
{ text: 'Concepts', link: '/v3.4/concepts/kernels' },
34+
{ text: 'Ontology', link: '/ontology/v3.4/' },
3435
{ text: 'Get Started', link: '/v3.4/getting-started/quickstart' },
3536
{
3637
text: 'Community',
@@ -67,6 +68,13 @@ export default withMermaid(defineConfig({
6768
{ text: 'Installation', link: '/v3.4/getting-started/installation' },
6869
]
6970
},
71+
{
72+
text: 'Ontology Files',
73+
items: [
74+
{ text: 'v3.4 (Turtle)', link: '/ontology/v3.4/' },
75+
{ text: 'v3.5 (Turtle)', link: '/ontology/v3.5/' },
76+
]
77+
},
7078
{
7179
text: 'Community',
7280
items: [
@@ -114,6 +122,13 @@ export default withMermaid(defineConfig({
114122
{ text: 'Installation', link: '/v3.5-alpha3/getting-started/installation' },
115123
]
116124
},
125+
{
126+
text: 'Ontology Files',
127+
items: [
128+
{ text: 'v3.4 (Turtle)', link: '/ontology/v3.4/' },
129+
{ text: 'v3.5 (Turtle)', link: '/ontology/v3.5/' },
130+
]
131+
},
117132
{
118133
text: 'Community',
119134
items: [
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
<script setup>
2+
import { computed, ref } from 'vue'
3+
import { useRoute, useRouter } from 'vitepress'
4+
5+
const route = useRoute()
6+
const router = useRouter()
7+
8+
const versions = [
9+
{ label: 'v3.4', prefix: '/v3.4/', badge: 'stable' },
10+
{ label: 'v3.5-alpha3', prefix: '/v3.5-alpha3/', badge: 'alpha' },
11+
]
12+
13+
const current = computed(() => {
14+
const path = route.path
15+
return versions.find(v => path.startsWith(v.prefix)) || versions[0]
16+
})
17+
18+
const isOpen = ref(false)
19+
20+
function switchTo(version) {
21+
isOpen.value = false
22+
const currentPath = route.path
23+
const currentVersion = versions.find(v => currentPath.startsWith(v.prefix))
24+
if (currentVersion && currentVersion.prefix !== version.prefix) {
25+
const relativePath = currentPath.replace(currentVersion.prefix, '')
26+
router.go(version.prefix + relativePath)
27+
} else if (!currentVersion) {
28+
router.go(version.prefix)
29+
}
30+
}
31+
</script>
32+
33+
<template>
34+
<div class="version-switcher" @mouseleave="isOpen = false">
35+
<button class="version-btn" @click="isOpen = !isOpen" v-if="typeof current === 'object'">
36+
{{ current.label }}
37+
<span class="version-badge" :class="current.badge">{{ current.badge }}</span>
38+
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
39+
<polyline points="6 9 12 15 18 9"/>
40+
</svg>
41+
</button>
42+
<div v-show="isOpen" class="version-dropdown">
43+
<a
44+
v-for="v in versions"
45+
:key="v.label"
46+
:class="{ active: v.prefix === current.prefix }"
47+
@click.prevent="switchTo(v)"
48+
>
49+
{{ v.label }}
50+
<span class="version-badge" :class="v.badge">{{ v.badge }}</span>
51+
</a>
52+
</div>
53+
</div>
54+
</template>
55+
56+
<style scoped>
57+
.version-switcher {
58+
position: relative;
59+
margin-right: 8px;
60+
}
61+
.version-btn {
62+
display: flex;
63+
align-items: center;
64+
gap: 6px;
65+
padding: 4px 10px;
66+
border: 1px solid var(--vp-c-divider);
67+
border-radius: 6px;
68+
background: transparent;
69+
color: var(--vp-c-text-1);
70+
font-size: 13px;
71+
cursor: pointer;
72+
font-family: inherit;
73+
}
74+
.version-btn:hover {
75+
border-color: var(--vp-c-brand-1);
76+
}
77+
.version-badge {
78+
font-size: 10px;
79+
padding: 1px 5px;
80+
border-radius: 4px;
81+
font-weight: 600;
82+
}
83+
.version-badge.stable {
84+
background: rgba(34, 197, 94, 0.15);
85+
color: #22c55e;
86+
}
87+
.version-badge.alpha {
88+
background: rgba(234, 179, 8, 0.15);
89+
color: #eab308;
90+
}
91+
.version-dropdown {
92+
position: absolute;
93+
top: calc(100% + 4px);
94+
left: 0;
95+
min-width: 160px;
96+
background: var(--vp-c-bg-elv);
97+
border: 1px solid var(--vp-c-divider);
98+
border-radius: 8px;
99+
padding: 4px;
100+
z-index: 100;
101+
box-shadow: 0 4px 16px rgba(0,0,0,0.15);
102+
}
103+
.version-dropdown a {
104+
display: flex;
105+
align-items: center;
106+
gap: 6px;
107+
padding: 6px 10px;
108+
border-radius: 4px;
109+
font-size: 13px;
110+
color: var(--vp-c-text-1);
111+
cursor: pointer;
112+
text-decoration: none;
113+
}
114+
.version-dropdown a:hover {
115+
background: var(--vp-c-bg-soft);
116+
}
117+
.version-dropdown a.active {
118+
color: var(--vp-c-brand-1);
119+
font-weight: 600;
120+
}
121+
</style>

docs/.vitepress/theme/index.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
11
import DefaultTheme from 'vitepress/theme'
2+
import VersionSwitcher from './VersionSwitcher.vue'
3+
import { h } from 'vue'
24
import './custom.css'
35

4-
export default DefaultTheme
6+
export default {
7+
extends: DefaultTheme,
8+
Layout() {
9+
return h(DefaultTheme.Layout, null, {
10+
'nav-bar-content-before': () => h(VersionSwitcher),
11+
})
12+
},
13+
}

docs/index.md

Lines changed: 142 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -3,71 +3,161 @@ layout: home
33
hero:
44
name: Concept Kernel
55
text: Protocol
6-
tagline: An open protocol for autonomous concept governance across distributed agents and semantic systems.
6+
tagline: Autonomous governance for distributed agents through boundary isolation and ontological enforcement.
77
actions:
88
- theme: brand
9-
text: Get Started
10-
link: /v3.4/getting-started/quickstart
11-
- theme: alt
12-
text: Introduction
9+
text: Read the Docs
1310
link: /v3.4/introduction
1411
- theme: alt
15-
text: Join Discord
12+
text: v3.5 Alpha
13+
link: /v3.5-alpha3/
14+
- theme: alt
15+
text: Discord
1616
link: https://discord.gg/sTbfxV9xyU
17-
18-
features:
19-
- icon: "\U0001F9E0"
20-
title: Autonomous Kernels
21-
details: Every concept is a self-governing kernel that defends its own ontology, enforces constraints, and participates in consensus.
22-
- icon: "\U0001F310"
23-
title: Protocol-Driven
24-
details: All operations flow through explicit protocol messages. No side effects without logging. Full auditability and replay capability.
25-
- icon: "\U0001F50F"
26-
title: Ontology-First
27-
details: Built on LinkML schemas and SHACL constraints. Every concept is type-safe, validated, and semantically grounded.
28-
- icon: "\U0001F91D"
29-
title: Consensus Governance
30-
details: Concept mutations require cryptographic proofs and consensus. No unilateral changes. Trust through verification.
31-
- icon: "\U0001F4E1"
32-
title: Burst Propagation
33-
details: Protocol-driven trigger waves traverse ontological relationships, evaluating constraints at each hop across the concept graph.
34-
- icon: "\U0001F680"
35-
title: Agent-Ready
36-
details: Designed for billions of autonomous agents to share, govern, and evolve concepts with semantic coherence at scale.
3717
---
3818

19+
<script setup>
20+
import { onMounted } from 'vue'
21+
22+
onMounted(async () => {
23+
if (typeof window === 'undefined') return
24+
const c = document.getElementById('kernel-canvas')
25+
if (!c) return
26+
const ctx = c.getContext('2d')
27+
const dpr = window.devicePixelRatio || 1
28+
29+
function resize() {
30+
c.width = c.offsetWidth * dpr
31+
c.height = c.offsetHeight * dpr
32+
ctx.scale(dpr, dpr)
33+
}
34+
resize()
35+
window.addEventListener('resize', resize)
36+
37+
const nodes = []
38+
const edges = []
39+
const w = () => c.offsetWidth
40+
const h = () => c.offsetHeight
41+
42+
const names = ['CK.Lib', 'CK.Task', 'CK.Goal', 'CK.Ontology', 'CK.Discovery',
43+
'CK.Compliance', 'LOCAL.Claude', 'CS.Voting', 'CK.Email']
44+
45+
for (let i = 0; i < names.length; i++) {
46+
nodes.push({
47+
x: Math.random() * 0.8 + 0.1,
48+
y: Math.random() * 0.8 + 0.1,
49+
vx: (Math.random() - 0.5) * 0.0003,
50+
vy: (Math.random() - 0.5) * 0.0003,
51+
r: 3 + Math.random() * 2,
52+
name: names[i],
53+
phase: Math.random() * Math.PI * 2,
54+
})
55+
}
56+
57+
for (let i = 0; i < nodes.length; i++) {
58+
const targets = Math.floor(Math.random() * 2) + 1
59+
for (let t = 0; t < targets; t++) {
60+
const j = Math.floor(Math.random() * nodes.length)
61+
if (j !== i) edges.push([i, j])
62+
}
63+
}
64+
65+
let frame = 0
66+
function draw() {
67+
frame++
68+
ctx.clearRect(0, 0, w(), h())
69+
70+
for (const n of nodes) {
71+
n.x += n.vx
72+
n.y += n.vy
73+
if (n.x < 0.05 || n.x > 0.95) n.vx *= -1
74+
if (n.y < 0.05 || n.y > 0.95) n.vy *= -1
75+
}
76+
77+
for (const [i, j] of edges) {
78+
const a = nodes[i], b = nodes[j]
79+
ctx.beginPath()
80+
ctx.moveTo(a.x * w(), a.y * h())
81+
ctx.lineTo(b.x * w(), b.y * h())
82+
ctx.strokeStyle = 'rgba(59, 130, 246, 0.12)'
83+
ctx.lineWidth = 1
84+
ctx.stroke()
85+
}
86+
87+
for (const n of nodes) {
88+
const pulse = Math.sin(frame * 0.02 + n.phase) * 0.3 + 0.7
89+
ctx.beginPath()
90+
ctx.arc(n.x * w(), n.y * h(), n.r * pulse * 1.5, 0, Math.PI * 2)
91+
ctx.fillStyle = `rgba(96, 165, 250, ${0.15 + pulse * 0.15})`
92+
ctx.fill()
93+
94+
ctx.beginPath()
95+
ctx.arc(n.x * w(), n.y * h(), n.r * 0.7, 0, Math.PI * 2)
96+
ctx.fillStyle = `rgba(139, 92, 246, ${0.5 + pulse * 0.3})`
97+
ctx.fill()
98+
99+
ctx.font = '9px system-ui'
100+
ctx.fillStyle = `rgba(200, 200, 220, ${0.3 + pulse * 0.2})`
101+
ctx.fillText(n.name, n.x * w() + n.r + 4, n.y * h() + 3)
102+
}
103+
104+
requestAnimationFrame(draw)
105+
}
106+
draw()
107+
})
108+
</script>
109+
110+
<div class="kernel-graph">
111+
<canvas id="kernel-canvas" style="width:100%;height:200px;display:block"></canvas>
112+
</div>
113+
114+
<div class="home-links">
115+
<div class="link-section">
116+
<h3>Ontology</h3>
117+
<p>BFO-aligned type definitions for every kernel.</p>
118+
<a href="/ontology/v3.4/">v3.4 Stable</a> · <a href="/ontology/v3.5/">v3.5 Alpha</a>
119+
</div>
120+
<div class="link-section">
121+
<h3>Specification</h3>
122+
<p>The Three Loops System — identity, capability, knowledge.</p>
123+
<a href="/v3.4/architecture">v3.4 Architecture</a> · <a href="/v3.5-alpha3/architecture">v3.5 Alpha</a>
124+
</div>
125+
<div class="link-section">
126+
<h3>Community</h3>
127+
<p>Shape the future of autonomous concept governance.</p>
128+
<a href="https://discord.gg/sTbfxV9xyU">Discord</a> · <a href="https://github.com/ConceptKernel">GitHub</a>
129+
</div>
130+
</div>
131+
39132
<style>
40-
.discord-banner {
41-
text-align: center;
42-
padding: 3rem 1.5rem;
133+
.kernel-graph {
134+
max-width: 800px;
135+
margin: 0 auto;
136+
padding: 0 1rem;
137+
}
138+
.home-links {
139+
display: flex;
140+
gap: 2rem;
141+
max-width: 800px;
43142
margin: 2rem auto;
44-
max-width: 720px;
143+
padding: 0 1rem;
45144
}
46-
.discord-banner h2 {
47-
font-size: 1.5rem;
48-
margin-bottom: 0.5rem;
145+
.link-section {
146+
flex: 1;
147+
}
148+
.link-section h3 {
149+
font-size: 1rem;
150+
margin-bottom: 0.3rem;
49151
}
50-
.discord-banner p {
152+
.link-section p {
51153
color: var(--vp-c-text-2);
52-
margin-bottom: 1.5rem;
154+
font-size: 0.85rem;
155+
margin-bottom: 0.5rem;
53156
}
54-
.discord-btn {
55-
display: inline-block;
56-
padding: 0.75rem 2rem;
57-
background: #5865F2;
58-
color: white !important;
59-
border-radius: 8px;
60-
font-weight: 600;
61-
text-decoration: none !important;
62-
transition: opacity 0.2s;
157+
.link-section a {
158+
font-size: 0.85rem;
63159
}
64-
.discord-btn:hover {
65-
opacity: 0.9;
160+
@media (max-width: 640px) {
161+
.home-links { flex-direction: column; gap: 1.5rem; }
66162
}
67163
</style>
68-
69-
<div class="discord-banner">
70-
<h2>Join the Community</h2>
71-
<p>Connect with contributors, ask questions, and help shape the future of concept governance.</p>
72-
<a href="https://discord.gg/sTbfxV9xyU" class="discord-btn">Join our Discord</a>
73-
</div>

0 commit comments

Comments
 (0)