From 1236bde68819038596a09d1cec0d91be456dc9eb Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Fri, 27 Feb 2026 13:44:07 -0800 Subject: [PATCH] Remove section dividers, add mycelium energy pulse, brighten page, add Commons Stack Toolkit - Remove vertical line dividers (.mycelial-divider) from all sections - Add connection-density-based pulsing glow to mycelial canvas: nodes with more nearby connections pulse brighter with organic sine-wave phase - Brighten background lightness by +0.02 across all scroll color stops - Add Commons Stack Toolkit glass-card in Legacy section featuring Augmented Bonding Curve, Conviction Voting, and Computer-Aided Governance (cadCAD) Co-Authored-By: Claude Opus 4.6 --- app/globals.css | 2 +- components/anastomosis-section.tsx | 2 - components/compost-section.tsx | 2 - components/emergence-section.tsx | 2 - components/goods-matrix-section.tsx | 2 - components/legacy-section.tsx | 57 +++++++++++++++++++++++- components/mycelial-canvas.tsx | 67 +++++++++++++++++++++-------- components/mycelium-section.tsx | 2 - components/network-map-section.tsx | 2 - components/nofi-section.tsx | 4 -- components/scroll-provider.tsx | 18 ++++---- components/undernet-section.tsx | 2 - 12 files changed, 113 insertions(+), 49 deletions(-) diff --git a/app/globals.css b/app/globals.css index 607104d..ae8c0b2 100644 --- a/app/globals.css +++ b/app/globals.css @@ -5,7 +5,7 @@ :root { /* Scroll-driven dynamic colors (set by JS) */ - --scroll-bg: oklch(0.20 0.03 140); + --scroll-bg: oklch(0.22 0.03 140); --scroll-fg: oklch(0.93 0.02 130); --scroll-accent: oklch(0.58 0.12 145); --scroll-depth: 0; diff --git a/components/anastomosis-section.tsx b/components/anastomosis-section.tsx index 76662eb..ae8d09f 100644 --- a/components/anastomosis-section.tsx +++ b/components/anastomosis-section.tsx @@ -31,8 +31,6 @@ export function AnastomosisSection() { return (
-
-

diff --git a/components/compost-section.tsx b/components/compost-section.tsx index 00ffdd5..fc63cf9 100644 --- a/components/compost-section.tsx +++ b/components/compost-section.tsx @@ -22,8 +22,6 @@ export function CompostSection() { return (
-
-

diff --git a/components/emergence-section.tsx b/components/emergence-section.tsx index 0074dee..612dc43 100644 --- a/components/emergence-section.tsx +++ b/components/emergence-section.tsx @@ -22,8 +22,6 @@ export function EmergenceSection() { return (
-
-

diff --git a/components/goods-matrix-section.tsx b/components/goods-matrix-section.tsx index 9edee44..9bf4db9 100644 --- a/components/goods-matrix-section.tsx +++ b/components/goods-matrix-section.tsx @@ -50,8 +50,6 @@ export function GoodsMatrixSection() { return (
-
-

diff --git a/components/legacy-section.tsx b/components/legacy-section.tsx index 1653627..c5eb7bf 100644 --- a/components/legacy-section.tsx +++ b/components/legacy-section.tsx @@ -7,8 +7,6 @@ export function LegacySection() { return (
-
-
{/* Header */}
@@ -54,6 +52,61 @@ export function LegacySection() { root system, the MycoStack grows outward.

+ + {/* Commons Stack Toolkit */} +
+

+ The Commons Stack Toolkit +

+
+
+
+ Augmented Bonding Curve +
+

+ A continuous funding mechanism that aligns contributor and + community incentives. Tokens minted into a bonding curve with + a built-in reserve — ensuring every project starts with + a funding floor, not a funding cliff. +

+
+
+
+ Conviction Voting +
+

+ Governance by sustained preference rather than snapshot + majority. Stake accumulates over time — the longer you + signal support, the stronger your conviction. Proposals pass + through collective patience, not political campaigns. +

+
+
+
+ Computer-Aided Governance +
+

+ Built on{" "} + + cadCAD + + ’s complex systems simulation framework. Model + governance proposals before deploying them — test + incentive structures, stress-test token economies, and + simulate emergent behavior in silico. +

+
+
+

+ These tools are the root enzymes of the MycoStack — + breaking down coordination problems into solvable substrates. +

+
{/* Three modes */} diff --git a/components/mycelial-canvas.tsx b/components/mycelial-canvas.tsx index ac2ccb5..48962a6 100644 --- a/components/mycelial-canvas.tsx +++ b/components/mycelial-canvas.tsx @@ -229,25 +229,6 @@ export function MycelialCanvas() { ctx.fill() } - // Draw faint connections between nearby hyphae tips - if (ageRatio < 0.5 && hypha.depth < 3) { - for (const other of alive) { - if (other === hypha) continue - const ox = other.x - hypha.x - const oy = other.y - hypha.y - const od = Math.sqrt(ox * ox + oy * oy) - if (od < 80 && od > 10) { - const connOpacity = 0.06 * (1 - od / 80) - ctx.strokeStyle = accent.replace(")", ` / ${connOpacity})`) - ctx.lineWidth = 0.5 - ctx.beginPath() - ctx.moveTo(hypha.x, hypha.y) - ctx.lineTo(other.x, other.y) - ctx.stroke() - } - } - } - // Branching if ( hypha.age > 25 && @@ -265,6 +246,54 @@ export function MycelialCanvas() { alive.push(hypha) } + // Connection lines + energy pulse at interconnected nodes + const time = Date.now() * 0.002 + for (let i = 0; i < alive.length; i++) { + const hypha = alive[i] + const ageRatio = hypha.age / hypha.maxAge + if (ageRatio > 0.5 || hypha.depth >= 3) continue + + let connectionCount = 0 + for (let j = i + 1; j < alive.length; j++) { + const other = alive[j] + const otherAge = other.age / other.maxAge + if (otherAge > 0.5 || other.depth >= 3) continue + + const dx = other.x - hypha.x + const dy = other.y - hypha.y + const dist = Math.sqrt(dx * dx + dy * dy) + + if (dist < 80 && dist > 10) { + connectionCount++ + const connOpacity = 0.06 * (1 - dist / 80) + ctx.strokeStyle = accent.replace(")", ` / ${connOpacity})`) + ctx.lineWidth = 0.5 + ctx.beginPath() + ctx.moveTo(hypha.x, hypha.y) + ctx.lineTo(other.x, other.y) + ctx.stroke() + } + } + + // Pulse glow at nodes with multiple connections + if (connectionCount > 0) { + const pulse = 0.5 + 0.5 * Math.sin(time + hypha.x * 0.01 + hypha.y * 0.008) + const intensity = Math.min(connectionCount / 4, 1) * pulse + const radius = 6 + connectionCount * 3 + + const gradient = ctx.createRadialGradient( + hypha.x, hypha.y, 0, + hypha.x, hypha.y, radius + ) + gradient.addColorStop(0, accent.replace(")", ` / ${intensity * 0.15})`)) + gradient.addColorStop(1, accent.replace(")", ` / 0)`)) + ctx.fillStyle = gradient + ctx.beginPath() + ctx.arc(hypha.x, hypha.y, radius, 0, Math.PI * 2) + ctx.fill() + } + } + // Spore particles const now = Date.now() // Emit spores near mouse diff --git a/components/mycelium-section.tsx b/components/mycelium-section.tsx index 0bcc6cb..049a491 100644 --- a/components/mycelium-section.tsx +++ b/components/mycelium-section.tsx @@ -52,8 +52,6 @@ export function MyceliumSection() { return (
-
-

diff --git a/components/network-map-section.tsx b/components/network-map-section.tsx index 09dcdba..292481b 100644 --- a/components/network-map-section.tsx +++ b/components/network-map-section.tsx @@ -180,8 +180,6 @@ export function NetworkMapSection() { return (
-
-

diff --git a/components/nofi-section.tsx b/components/nofi-section.tsx index c66ad5a..be36091 100644 --- a/components/nofi-section.tsx +++ b/components/nofi-section.tsx @@ -170,8 +170,6 @@ export function NoFiSection() { return (
-
-
{/* Ecosystem header */}
@@ -368,8 +366,6 @@ export function NoFiSection() { {/* Network Map */} -
-

The Network of Networks diff --git a/components/scroll-provider.tsx b/components/scroll-provider.tsx index 038e7a8..8761b83 100644 --- a/components/scroll-provider.tsx +++ b/components/scroll-provider.tsx @@ -8,15 +8,15 @@ import { useEffect } from "react" // Background stays in the 0.20-0.24 range (dark forest floor). // Light text throughout. Hue drifts gently through greens and teals. const COLOR_STOPS: number[][] = [ - [0.0, 0.20, 0.03, 140, 0.93, 0.02, 130, 0.58, 0.12, 145], // Hero: mossy green - [0.10, 0.21, 0.035, 135, 0.93, 0.02, 135, 0.56, 0.13, 140], // Legacy: deep fern - [0.18, 0.22, 0.04, 130, 0.92, 0.02, 125, 0.55, 0.14, 130], // Compost: warm moss - [0.30, 0.22, 0.045, 150, 0.93, 0.02, 150, 0.58, 0.15, 155], // Mycelium: forest green - [0.42, 0.21, 0.04, 170, 0.93, 0.02, 170, 0.55, 0.13, 175], // Undernet: deep teal-green - [0.52, 0.22, 0.04, 160, 0.93, 0.02, 155, 0.57, 0.14, 160], // Anastomosis: fern blend - [0.62, 0.21, 0.035, 145, 0.92, 0.02, 140, 0.55, 0.13, 148], // NoFi: returning green - [0.75, 0.23, 0.04, 135, 0.93, 0.02, 130, 0.58, 0.14, 135], // Emergence: bright moss - [0.90, 0.22, 0.035, 145, 0.93, 0.02, 140, 0.56, 0.13, 150], // Network Map: canopy green + [0.0, 0.22, 0.03, 140, 0.93, 0.02, 130, 0.58, 0.12, 145], // Hero: mossy green + [0.10, 0.23, 0.035, 135, 0.93, 0.02, 135, 0.56, 0.13, 140], // Legacy: deep fern + [0.18, 0.24, 0.04, 130, 0.92, 0.02, 125, 0.55, 0.14, 130], // Compost: warm moss + [0.30, 0.24, 0.045, 150, 0.93, 0.02, 150, 0.58, 0.15, 155], // Mycelium: forest green + [0.42, 0.23, 0.04, 170, 0.93, 0.02, 170, 0.55, 0.13, 175], // Undernet: deep teal-green + [0.52, 0.24, 0.04, 160, 0.93, 0.02, 155, 0.57, 0.14, 160], // Anastomosis: fern blend + [0.62, 0.23, 0.035, 145, 0.92, 0.02, 140, 0.55, 0.13, 148], // NoFi: returning green + [0.75, 0.25, 0.04, 135, 0.93, 0.02, 130, 0.58, 0.14, 135], // Emergence: bright moss + [0.90, 0.24, 0.035, 145, 0.93, 0.02, 140, 0.56, 0.13, 150], // Network Map: canopy green ] function lerp(a: number, b: number, t: number) { diff --git a/components/undernet-section.tsx b/components/undernet-section.tsx index 381b991..b84bbd1 100644 --- a/components/undernet-section.tsx +++ b/components/undernet-section.tsx @@ -21,8 +21,6 @@ export function UndernetSection() { return (
-
-