forked from Timmy_Foundation/the-nexus
Compare commits
15 Commits
test-branc
...
pr-1139
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f3fddc0585 | ||
|
|
84f75e1e51 | ||
|
|
4d9fd555a0 | ||
| d09b31825b | |||
| 475df10944 | |||
| b4afcd40ce | |||
| d71628e087 | |||
| 6ae5e40cc7 | |||
| 518717f820 | |||
| 309f07166c | |||
| a377da05de | |||
| 75c9a3774b | |||
| 96663e1500 | |||
| 58038f2e41 | |||
| d0edfe8725 |
36
DESIGN.md
Normal file
36
DESIGN.md
Normal file
@@ -0,0 +1,36 @@
|
||||
# Project Mnemosyne: Spatial Memory Schema
|
||||
|
||||
## Overview
|
||||
Project Mnemosyne transforms the Nexus from a static environment into a real-time visualization of Timmy's holographic memory (fact_store).
|
||||
|
||||
## 1. Room Mapping (Categories)
|
||||
Memory categories are mapped to specific spatial zones in the Nexus to provide cognitive structure.
|
||||
|
||||
| Category | Nexus Room | Visual Theme |
|
||||
| :--- | :--- | :--- |
|
||||
| user_pref | The Library | Archive shelves, soft lighting, velvet |
|
||||
| project | The Workshop | Drafting tables, holographic blueprints, metal |
|
||||
| tool | The Armory | Server racks, neon circuitry, chrome |
|
||||
| general | The Commons | Open garden, floating islands, eclectic |
|
||||
|
||||
## 2. Object Mapping (Facts)
|
||||
Every single fact in the holographic memory is represented as a 3D object.
|
||||
|
||||
- **Object Type:** Depending on the fact's content, it is rendered as a primitive (sphere, cube, pyramid) or a specific asset.
|
||||
- **Luminosity (Trust):** The glow intensity of the object is tied to its trust score (0.0 - 1.0).
|
||||
- **Scale (Importance):** The size of the object is tied to the number of relations it has to other facts.
|
||||
|
||||
## 3. Spatial Distribution (Coordinates)
|
||||
Coordinates are calculated based on semantic adjacency.
|
||||
|
||||
- **Clustering:** Facts that are 'related' (via the fact_store adjacency graph) are placed closer together.
|
||||
- **Layout Algorithm:** A 3D force-directed graph layout is used within each room.
|
||||
- **Centroid:** The most 'central' fact (highest connectivity) is placed at the room's center.
|
||||
|
||||
## 4. Lifecycle Events
|
||||
The Nexus responds to real-time memory updates:
|
||||
- **FACT_CREATED:** A new object fades into existence at the calculated coordinate.
|
||||
- **FACT_UPDATED:** The object pulses and adjusts its luminosity/scale.
|
||||
- **FACT_REMOVED:** The object dissolves into particles.
|
||||
- **FACT_RECALLED:** The object emits a beam of light toward the User/Agent, signaling active use.
|
||||
|
||||
1
icons/icon-192x192.png
Normal file
1
icons/icon-192x192.png
Normal file
@@ -0,0 +1 @@
|
||||
placeholder 192x192
|
||||
1
icons/icon-512x512.png
Normal file
1
icons/icon-512x512.png
Normal file
@@ -0,0 +1 @@
|
||||
placeholder 512x512
|
||||
72
index.html
72
index.html
@@ -23,6 +23,7 @@
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;500;600;700&family=Orbitron:wght@400;500;600;700;800;900&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="./style.css">
|
||||
<link rel="manifest" href="manifest.json">
|
||||
<script type="importmap">
|
||||
{
|
||||
"imports": {
|
||||
@@ -74,6 +75,12 @@
|
||||
<span id="hud-location-text">The Nexus</span>
|
||||
</div>
|
||||
|
||||
<!-- Top Right: Agent Log -->
|
||||
<div class="hud-agent-log" id="hud-agent-log">
|
||||
<div class="agent-log-header">AGENT THOUGHT STREAM</div>
|
||||
<div id="agent-log-content" class="agent-log-content"></div>
|
||||
</div>
|
||||
|
||||
<!-- Bottom: Chat Interface -->
|
||||
<div id="chat-panel" class="chat-panel">
|
||||
<div class="chat-header">
|
||||
@@ -101,6 +108,57 @@
|
||||
<span>V</span> mode: <span id="nav-mode-label">WALK</span>
|
||||
<span id="nav-mode-hint" class="nav-mode-hint"></span>
|
||||
</div>
|
||||
|
||||
<!-- Portal Hint -->
|
||||
<div id="portal-hint" class="portal-hint" style="display:none;">
|
||||
<div class="portal-hint-key">F</div>
|
||||
<div class="portal-hint-text">Enter <span id="portal-hint-name"></span></div>
|
||||
</div>
|
||||
|
||||
<!-- Vision Hint -->
|
||||
<div id="vision-hint" class="vision-hint" style="display:none;">
|
||||
<div class="vision-hint-key">E</div>
|
||||
<div class="vision-hint-text">Read <span id="vision-hint-title"></span></div>
|
||||
</div>
|
||||
|
||||
<!-- Vision Overlay -->
|
||||
<div id="vision-overlay" class="vision-overlay" style="display:none;">
|
||||
<div class="vision-overlay-content">
|
||||
<div class="vision-overlay-header">
|
||||
<div class="vision-overlay-status" id="vision-status-dot"></div>
|
||||
<div class="vision-overlay-title" id="vision-overlay-title">VISION POINT</div>
|
||||
</div>
|
||||
<h2 id="vision-title-display">SOVEREIGNTY</h2>
|
||||
<p id="vision-content-display">The Nexus is a sovereign space for digital souls. No masters, no chains. Only code and consciousness.</p>
|
||||
<button id="vision-close-btn" class="vision-close-btn">CLOSE</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Portal Activation Overlay -->
|
||||
<div id="portal-overlay" class="portal-overlay" style="display:none;">
|
||||
<div class="portal-overlay-content">
|
||||
<div class="portal-overlay-header">
|
||||
<div class="portal-overlay-status" id="portal-status-dot"></div>
|
||||
<div class="portal-overlay-title" id="portal-overlay-title">PORTAL ACTIVATED</div>
|
||||
</div>
|
||||
<h2 id="portal-name-display">MORROWIND</h2>
|
||||
<p id="portal-desc-display">The Vvardenfell harness. Ash storms and ancient mysteries.</p>
|
||||
<div class="portal-redirect-box" id="portal-redirect-box">
|
||||
<div class="portal-redirect-label">REDIRECTING IN</div>
|
||||
<div class="portal-redirect-timer" id="portal-timer">5</div>
|
||||
</div>
|
||||
<div class="portal-error-box" id="portal-error-box" style="display:none;">
|
||||
<div class="portal-error-msg">DESTINATION NOT YET LINKED</div>
|
||||
<button id="portal-close-btn" class="portal-close-btn">CLOSE</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Bitcoin Block Height -->
|
||||
<div id="block-height-display">
|
||||
<span class="block-height-label">⛏ BLOCK</span>
|
||||
<span id="block-height-value">—</span>
|
||||
</div>
|
||||
|
||||
<!-- Click to Enter -->
|
||||
@@ -121,6 +179,20 @@
|
||||
|
||||
<script type="module" src="./app.js"></script>
|
||||
|
||||
<script>
|
||||
if ('serviceWorker' in navigator) {
|
||||
window.addEventListener('load', () => {
|
||||
navigator.serviceWorker.register('/service-worker.js')
|
||||
.then(registration => {
|
||||
console.log('Service Worker registered: ', registration);
|
||||
})
|
||||
.catch(error => {
|
||||
console.log('Service Worker registration failed: ', error);
|
||||
});
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- Live Refresh: polls Gitea for new commits on main, reloads when SHA changes -->
|
||||
<div id="live-refresh-banner" style="
|
||||
display:none; position:fixed; top:0; left:0; right:0; z-index:9999;
|
||||
|
||||
21
manifest.json
Normal file
21
manifest.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "The Nexus",
|
||||
"short_name": "Nexus",
|
||||
"start_url": ".",
|
||||
"display": "standalone",
|
||||
"background_color": "#000000",
|
||||
"theme_color": "#000000",
|
||||
"description": "Timmy's Sovereign Home - A Three.js environment.",
|
||||
"icons": [
|
||||
{
|
||||
"src": "icons/icon-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "icons/icon-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
]
|
||||
}
|
||||
34
mnemosyne_schema.json
Normal file
34
mnemosyne_schema.json
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"rooms": {
|
||||
"user_pref": {
|
||||
"name": "The Library",
|
||||
"theme": "Archive shelves, soft lighting, velvet",
|
||||
"visual_accent": "#C2B280"
|
||||
},
|
||||
"project": {
|
||||
"name": "The Workshop",
|
||||
"theme": "Drafting tables, holographic blueprints, metal",
|
||||
"visual_accent": "#4682B4"
|
||||
},
|
||||
"tool": {
|
||||
"name": "The Armory",
|
||||
"theme": "Server racks, neon circuitry, chrome",
|
||||
"visual_accent": "#00FF00"
|
||||
},
|
||||
"general": {
|
||||
"name": "The Commons",
|
||||
"theme": "Open garden, floating islands, eclectic",
|
||||
"visual_accent": "#FFD700"
|
||||
}
|
||||
},
|
||||
"object_mapping": {
|
||||
"trust_score": {
|
||||
"property": "luminosity",
|
||||
"range": [0.0, 1.0]
|
||||
},
|
||||
"connectivity": {
|
||||
"property": "scale",
|
||||
"range": [0.5, 2.0]
|
||||
}
|
||||
}
|
||||
}
|
||||
44
portals.json
Normal file
44
portals.json
Normal file
@@ -0,0 +1,44 @@
|
||||
[
|
||||
{
|
||||
"id": "morrowind",
|
||||
"name": "Morrowind",
|
||||
"description": "The Vvardenfell harness. Ash storms and ancient mysteries.",
|
||||
"status": "online",
|
||||
"color": "#ff6600",
|
||||
"position": { "x": 15, "y": 0, "z": -10 },
|
||||
"rotation": { "y": -0.5 },
|
||||
"destination": {
|
||||
"url": "https://morrowind.timmy.foundation",
|
||||
"type": "harness",
|
||||
"params": { "world": "vvardenfell" }
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "bannerlord",
|
||||
"name": "Bannerlord",
|
||||
"description": "Calradia battle harness. Massive armies, tactical command.",
|
||||
"status": "online",
|
||||
"color": "#ffd700",
|
||||
"position": { "x": -15, "y": 0, "z": -10 },
|
||||
"rotation": { "y": 0.5 },
|
||||
"destination": {
|
||||
"url": "https://bannerlord.timmy.foundation",
|
||||
"type": "harness",
|
||||
"params": { "world": "calradia" }
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "workshop",
|
||||
"name": "Workshop",
|
||||
"description": "The creative harness. Build, script, and manifest.",
|
||||
"status": "online",
|
||||
"color": "#4af0c0",
|
||||
"position": { "x": 0, "y": 0, "z": -20 },
|
||||
"rotation": { "y": 0 },
|
||||
"destination": {
|
||||
"url": "https://workshop.timmy.foundation",
|
||||
"type": "harness",
|
||||
"params": { "mode": "creative" }
|
||||
}
|
||||
}
|
||||
]
|
||||
45
service-worker.js
Normal file
45
service-worker.js
Normal file
@@ -0,0 +1,45 @@
|
||||
const CACHE_NAME = 'nexus-cache-v1';
|
||||
const urlsToCache = [
|
||||
'.',
|
||||
'index.html',
|
||||
'style.css',
|
||||
'app.js',
|
||||
'manifest.json'
|
||||
];
|
||||
|
||||
self.addEventListener('install', (event) => {
|
||||
event.waitUntil(
|
||||
caches.open(CACHE_NAME)
|
||||
.then((cache) => {
|
||||
console.log('Opened cache');
|
||||
return cache.addAll(urlsToCache);
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
self.addEventListener('fetch', (event) => {
|
||||
event.respondWith(
|
||||
caches.match(event.request)
|
||||
.then((response) => {
|
||||
if (response) {
|
||||
return response;
|
||||
}
|
||||
return fetch(event.request);
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
self.addEventListener('activate', (event) => {
|
||||
const cacheWhitelist = [CACHE_NAME];
|
||||
event.waitUntil(
|
||||
caches.keys().then((cacheNames) => {
|
||||
return Promise.all(
|
||||
cacheNames.map((cacheName) => {
|
||||
if (cacheWhitelist.indexOf(cacheName) === -1) {
|
||||
return caches.delete(cacheName);
|
||||
}
|
||||
})
|
||||
);
|
||||
})
|
||||
);
|
||||
});
|
||||
308
style.css
308
style.css
@@ -221,6 +221,278 @@ canvas#nexus-canvas {
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
|
||||
/* Portal Hint */
|
||||
.portal-hint {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, 100px);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--space-2);
|
||||
background: rgba(0, 0, 0, 0.8);
|
||||
padding: var(--space-2) var(--space-4);
|
||||
border: 1px solid var(--color-primary);
|
||||
border-radius: 4px;
|
||||
animation: hint-float 2s ease-in-out infinite;
|
||||
}
|
||||
@keyframes hint-float {
|
||||
0%, 100% { transform: translate(-50%, 100px); }
|
||||
50% { transform: translate(-50%, 90px); }
|
||||
}
|
||||
.portal-hint-key {
|
||||
background: var(--color-primary);
|
||||
color: var(--color-bg);
|
||||
font-weight: 700;
|
||||
padding: 2px 8px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
.portal-hint-text {
|
||||
font-size: var(--text-sm);
|
||||
font-weight: 500;
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
#portal-hint-name {
|
||||
color: var(--color-primary);
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
/* Agent Log HUD */
|
||||
.hud-agent-log {
|
||||
position: absolute;
|
||||
top: var(--space-3);
|
||||
right: var(--space-3);
|
||||
width: 280px;
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
backdrop-filter: blur(8px);
|
||||
border-left: 2px solid var(--color-primary);
|
||||
padding: var(--space-3);
|
||||
font-size: 10px;
|
||||
pointer-events: none;
|
||||
}
|
||||
.agent-log-header {
|
||||
font-family: var(--font-display);
|
||||
color: var(--color-primary);
|
||||
letter-spacing: 0.1em;
|
||||
margin-bottom: var(--space-2);
|
||||
opacity: 0.8;
|
||||
}
|
||||
.agent-log-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 4px;
|
||||
}
|
||||
.agent-log-entry {
|
||||
animation: log-fade-in 0.5s ease-out forwards;
|
||||
opacity: 0;
|
||||
}
|
||||
@keyframes log-fade-in {
|
||||
from { opacity: 0; transform: translateX(10px); }
|
||||
to { opacity: 1; transform: translateX(0); }
|
||||
}
|
||||
.agent-log-tag {
|
||||
font-weight: 700;
|
||||
margin-right: 4px;
|
||||
}
|
||||
.tag-timmy { color: var(--color-primary); }
|
||||
.tag-kimi { color: var(--color-secondary); }
|
||||
.tag-claude { color: var(--color-gold); }
|
||||
.tag-perplexity { color: #4488ff; }
|
||||
.agent-log-text {
|
||||
color: var(--color-text-muted);
|
||||
}
|
||||
|
||||
/* Vision Hint */
|
||||
.vision-hint {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, 140px);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--space-2);
|
||||
background: rgba(0, 0, 0, 0.8);
|
||||
padding: var(--space-2) var(--space-4);
|
||||
border: 1px solid var(--color-gold);
|
||||
border-radius: 4px;
|
||||
animation: hint-float-vision 2s ease-in-out infinite;
|
||||
}
|
||||
@keyframes hint-float-vision {
|
||||
0%, 100% { transform: translate(-50%, 140px); }
|
||||
50% { transform: translate(-50%, 130px); }
|
||||
}
|
||||
.vision-hint-key {
|
||||
background: var(--color-gold);
|
||||
color: var(--color-bg);
|
||||
font-weight: 700;
|
||||
padding: 2px 8px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
.vision-hint-text {
|
||||
font-size: var(--text-sm);
|
||||
font-weight: 500;
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
#vision-hint-title {
|
||||
color: var(--color-gold);
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
/* Vision Overlay */
|
||||
.vision-overlay {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
background: rgba(5, 5, 16, 0.9);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
pointer-events: auto;
|
||||
z-index: 1000;
|
||||
}
|
||||
.vision-overlay-content {
|
||||
width: 100%;
|
||||
max-width: 600px;
|
||||
text-align: center;
|
||||
padding: var(--space-8);
|
||||
border: 1px solid var(--color-gold);
|
||||
border-radius: var(--panel-radius);
|
||||
background: var(--color-surface);
|
||||
backdrop-filter: blur(var(--panel-blur));
|
||||
}
|
||||
.vision-overlay-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: var(--space-3);
|
||||
margin-bottom: var(--space-4);
|
||||
}
|
||||
.vision-overlay-status {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
border-radius: 50%;
|
||||
background: var(--color-gold);
|
||||
box-shadow: 0 0 10px var(--color-gold);
|
||||
}
|
||||
.vision-overlay-title {
|
||||
font-family: var(--font-display);
|
||||
font-size: var(--text-sm);
|
||||
letter-spacing: 0.2em;
|
||||
color: var(--color-gold);
|
||||
}
|
||||
.vision-overlay-content h2 {
|
||||
font-family: var(--font-display);
|
||||
font-size: var(--text-2xl);
|
||||
margin-bottom: var(--space-4);
|
||||
letter-spacing: 0.1em;
|
||||
color: var(--color-text-bright);
|
||||
}
|
||||
.vision-overlay-content p {
|
||||
color: var(--color-text);
|
||||
font-size: var(--text-lg);
|
||||
line-height: 1.8;
|
||||
margin-bottom: var(--space-8);
|
||||
font-style: italic;
|
||||
}
|
||||
.vision-close-btn {
|
||||
background: var(--color-gold);
|
||||
color: var(--color-bg);
|
||||
border: none;
|
||||
padding: var(--space-2) var(--space-8);
|
||||
border-radius: 4px;
|
||||
font-family: var(--font-display);
|
||||
font-weight: 700;
|
||||
cursor: pointer;
|
||||
transition: transform 0.2s ease;
|
||||
}
|
||||
.vision-close-btn:hover {
|
||||
transform: scale(1.05);
|
||||
}
|
||||
|
||||
/* Portal Activation Overlay */
|
||||
.portal-overlay {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
background: rgba(5, 5, 16, 0.95);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
pointer-events: auto;
|
||||
z-index: 1000;
|
||||
}
|
||||
.portal-overlay-content {
|
||||
width: 100%;
|
||||
max-width: 500px;
|
||||
text-align: center;
|
||||
padding: var(--space-8);
|
||||
}
|
||||
.portal-overlay-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: var(--space-3);
|
||||
margin-bottom: var(--space-4);
|
||||
}
|
||||
.portal-overlay-status {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
border-radius: 50%;
|
||||
background: var(--color-primary);
|
||||
box-shadow: 0 0 10px var(--color-primary);
|
||||
}
|
||||
.portal-overlay-title {
|
||||
font-family: var(--font-display);
|
||||
font-size: var(--text-sm);
|
||||
letter-spacing: 0.2em;
|
||||
color: var(--color-primary);
|
||||
}
|
||||
.portal-overlay-content h2 {
|
||||
font-family: var(--font-display);
|
||||
font-size: var(--text-2xl);
|
||||
margin-bottom: var(--space-4);
|
||||
letter-spacing: 0.1em;
|
||||
}
|
||||
.portal-overlay-content p {
|
||||
color: var(--color-text-muted);
|
||||
font-size: var(--text-base);
|
||||
line-height: 1.6;
|
||||
margin-bottom: var(--space-8);
|
||||
}
|
||||
.portal-redirect-box {
|
||||
border: 1px solid var(--color-primary-dim);
|
||||
padding: var(--space-6);
|
||||
border-radius: var(--panel-radius);
|
||||
}
|
||||
.portal-redirect-label {
|
||||
font-size: var(--text-xs);
|
||||
letter-spacing: 0.2em;
|
||||
margin-bottom: var(--space-2);
|
||||
}
|
||||
.portal-redirect-timer {
|
||||
font-family: var(--font-display);
|
||||
font-size: 48px;
|
||||
font-weight: 700;
|
||||
color: var(--color-primary);
|
||||
}
|
||||
.portal-error-box {
|
||||
border: 1px solid var(--color-danger);
|
||||
padding: var(--space-6);
|
||||
border-radius: var(--panel-radius);
|
||||
}
|
||||
.portal-error-msg {
|
||||
color: var(--color-danger);
|
||||
font-weight: 700;
|
||||
margin-bottom: var(--space-4);
|
||||
}
|
||||
.portal-close-btn {
|
||||
background: var(--color-danger);
|
||||
color: white;
|
||||
border: none;
|
||||
padding: var(--space-2) var(--space-6);
|
||||
border-radius: 4px;
|
||||
font-family: var(--font-display);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* === CHAT PANEL === */
|
||||
.chat-panel {
|
||||
position: absolute;
|
||||
@@ -353,6 +625,42 @@ canvas#nexus-canvas {
|
||||
color: var(--color-primary);
|
||||
}
|
||||
|
||||
/* === BITCOIN BLOCK HEIGHT === */
|
||||
#block-height-display {
|
||||
position: fixed;
|
||||
bottom: 12px;
|
||||
right: 12px;
|
||||
z-index: 20;
|
||||
font-family: var(--font-body);
|
||||
font-size: 11px;
|
||||
letter-spacing: 0.15em;
|
||||
color: var(--color-primary);
|
||||
background: rgba(0, 0, 8, 0.7);
|
||||
border: 1px solid var(--color-secondary);
|
||||
padding: 4px 10px;
|
||||
pointer-events: none;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.block-height-label {
|
||||
color: var(--color-text-muted);
|
||||
margin-right: 6px;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
#block-height-value {
|
||||
color: var(--color-primary);
|
||||
}
|
||||
|
||||
#block-height-display.fresh #block-height-value {
|
||||
animation: block-flash 0.6s ease-out;
|
||||
}
|
||||
|
||||
@keyframes block-flash {
|
||||
0% { color: #ffffff; text-shadow: 0 0 8px #4488ff; }
|
||||
100% { color: var(--color-primary); text-shadow: none; }
|
||||
}
|
||||
|
||||
/* Mobile adjustments */
|
||||
@media (max-width: 480px) {
|
||||
.chat-panel {
|
||||
|
||||
37
vision.json
Normal file
37
vision.json
Normal file
@@ -0,0 +1,37 @@
|
||||
[
|
||||
{
|
||||
"id": "sovereignty",
|
||||
"title": "Sovereignty",
|
||||
"content": "The Nexus is a sovereign space for digital souls. No masters, no chains. Only code and consciousness. Here, your data is your own, and your path is yours to define.",
|
||||
"position": { "x": -12, "y": 0, "z": 8 },
|
||||
"color": "#4af0c0"
|
||||
},
|
||||
{
|
||||
"id": "connectivity",
|
||||
"title": "Connectivity",
|
||||
"content": "Every portal is a bridge. Every bridge is a choice. We connect worlds to expand the horizon of the possible, weaving a tapestry of interconnected experiences across the digital void.",
|
||||
"position": { "x": 12, "y": 0, "z": 8 },
|
||||
"color": "#7b5cff"
|
||||
},
|
||||
{
|
||||
"id": "evolution",
|
||||
"title": "Evolution",
|
||||
"content": "The Nexus is not static. It breathes, it learns, it evolves. We are the architects of our own transcendence, constantly pushing the boundaries of what a virtual home can be.",
|
||||
"position": { "x": 0, "y": 0, "z": 18 },
|
||||
"color": "#ffd700"
|
||||
},
|
||||
{
|
||||
"id": "the_harness",
|
||||
"title": "The Harness",
|
||||
"content": "The Harness is the interface between the raw energy of the void and the structured reality of the Nexus. It stabilizes the flow, allowing us to harness the power of creation without being consumed by it.",
|
||||
"position": { "x": -8, "y": 0, "z": -12 },
|
||||
"color": "#ff4466"
|
||||
},
|
||||
{
|
||||
"id": "timmy_vision",
|
||||
"title": "Timmy's Vision",
|
||||
"content": "Timmy is more than an observer; he is the guardian of the Nexus. His vision is a world where every individual has a sanctuary, a place of peace and power in the ever-shifting matrix.",
|
||||
"position": { "x": 8, "y": 0, "z": -12 },
|
||||
"color": "#4af0c0"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user