From 49fbc500354738526f394b4d8f35bbb2af5fbc01 Mon Sep 17 00:00:00 2001 From: Alexander Whitestone Date: Mon, 6 Apr 2026 13:50:18 -0400 Subject: [PATCH 1/2] feat: add /help page for Nexus web frontend Adds help.html to the repo root, resolving the 404 at /help for users accessing the Nexus web app. The page documents navigation controls, keyboard bindings, Timmy chat commands, portal status indicators, and HUD panel descriptions, using the existing dark-space/holographic design system (Orbitron + JetBrains Mono, teal/purple palette). Also adds tests/test_help_page.py to verify the page exists and covers required sections. Fixes #833 Co-Authored-By: Claude Sonnet 4.6 --- help.html | 488 ++++++++++++++++++++++++++++++++++++++++ tests/test_help_page.py | 42 ++++ 2 files changed, 530 insertions(+) create mode 100644 help.html create mode 100644 tests/test_help_page.py diff --git a/help.html b/help.html new file mode 100644 index 0000000..77173f1 --- /dev/null +++ b/help.html @@ -0,0 +1,488 @@ + + + + + + +Help — The Nexus + + + + + + + +
+ + + + + +
+
+ + Navigation Controls +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
WASD
Move forward / left / backward / right
Mouse
Look around — click the canvas to capture the pointer
V
Toggle navigation mode: Walk → Fly → Orbit
F
Enter nearby portal (when portal hint is visible)
E
Read nearby vision point (when vision hint is visible)
Enter
Focus / unfocus chat input
Esc
Release pointer lock / close overlays
+
+
+ + +
+
+ + Timmy Chat Commands +
+
+
+
+ System Status + Quick action — asks Timmy for a live system health summary. +
+
+ Agent Check + Quick action — lists all active agents and their current state. +
+
+ Portal Atlas + Quick action — opens the full portal map overlay. +
+
+ Help + Quick action — requests navigation assistance from Timmy. +
+
+ Free-form text + Type anything in the chat bar and press Enter or → to send. Timmy processes all natural-language input. +
+
+
+
+ + +
+
+ 🌐 + Portal Atlas +
+
+
+

Portals are gateways to external systems and game-worlds. Walk up to a glowing portal in the Nexus and press F to activate it, or open the Portal Atlas (top-right button) for a full map view.

+

Portal status indicators:

+
+
+
+ + ONLINE + Portal is live and will redirect immediately on activation. +
+
+ + STANDBY + Portal is reachable but destination system may be idle. +
+
+ + OFFLINE / UNLINKED + Destination not yet connected. Activation shows an error card. +
+
+
+
+ + +
+
+ + HUD Panels +
+
+
+
+ Symbolic Engine + Live feed from Timmy's rule-based reasoning layer. +
+
+ Blackboard + Shared working memory used across all cognitive subsystems. +
+
+ Symbolic Planner + Goal decomposition and task sequencing output. +
+
+ Case-Based Reasoner + Analogical reasoning — matches current situation to past cases. +
+
+ Neuro-Symbolic Bridge + Translation layer between neural inference and symbolic logic. +
+
+ Meta-Reasoning + Timmy reflecting on its own thought process and confidence. +
+
+ Sovereign Health + Core vitals: memory usage, heartbeat interval, alert flags. +
+
+ Adaptive Calibrator + Live tuning of response thresholds and behavior weights. +
+
+
+
+ + +
+
+ + System Information +
+
+
+

The Nexus is Timmy's canonical sovereign home-world — a local-first 3D space that serves as both a training ground and a live visualization surface for the Timmy AI system.

+

The WebSocket gateway (server.py) runs on port 8765 and bridges Timmy's cognition layer, game-world connectors, and the browser frontend. The HERMES indicator in the HUD shows live connectivity status.

+

Source code and issue tracker: Timmy_Foundation/the-nexus

+
+
+
+ + +
+ THE NEXUS + Questions? Speak to Timmy in the chat bar on the main world. +
+ +
+ + + diff --git a/tests/test_help_page.py b/tests/test_help_page.py new file mode 100644 index 0000000..b8a107e --- /dev/null +++ b/tests/test_help_page.py @@ -0,0 +1,42 @@ +"""Tests for the /help page. Refs: #833 (Missing /help page).""" +from pathlib import Path + + +def test_help_html_exists() -> None: + assert Path("help.html").exists(), "help.html must exist to resolve /help 404" + + +def test_help_html_is_valid_html() -> None: + content = Path("help.html").read_text() + assert "" in content + assert "" in content + + +def test_help_page_has_required_sections() -> None: + content = Path("help.html").read_text() + + # Navigation controls section + assert "Navigation Controls" in content + + # Chat commands section + assert "Chat" in content + + # Portal reference + assert "Portal" in content + + # Back link to home + assert 'href="/"' in content + + +def test_help_page_links_back_to_home() -> None: + content = Path("help.html").read_text() + assert 'href="/"' in content, "help page must have a link back to the main Nexus world" + + +def test_help_page_has_keyboard_controls() -> None: + content = Path("help.html").read_text() + # Movement keys are listed individually as elements + for key in ["W", "A", "S", "D", + "Mouse", "Enter", "Esc"]: + assert key in content, f"help page must document the {key!r} control" -- 2.43.0 From 1420c0d64b531d0bc4c6b2b02d789578622649d1 Mon Sep 17 00:00:00 2001 From: Alexander Whitestone Date: Mon, 6 Apr 2026 13:51:57 -0400 Subject: [PATCH 2/2] WIP: Claude Code progress on #833 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Automated salvage commit — agent session ended (exit 0). Work in progress, may need continuation. --- .../webhook_health_dashboard.cpython-312.pyc | Bin 0 -> 14368 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bin/__pycache__/webhook_health_dashboard.cpython-312.pyc diff --git a/bin/__pycache__/webhook_health_dashboard.cpython-312.pyc b/bin/__pycache__/webhook_health_dashboard.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6850fca6ad3bc5236baf23f0ead852c650f57361 GIT binary patch literal 14368 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 Ln<%D&EbspZv@oDH literal 0 HcmV?d00001 -- 2.43.0