Alexander Whitestone d4bbe157c2 fix: Workshop connection status HUD with timeout and retry
Fixes #5

The Workshop page was stuck on INITIALIZING forever because:
- main.js was never loaded (script tag was commented out)
- No WebSocket connection logic existed
- No status indicator or error handling

Changes:
- Add connection status HUD to world/index.html showing
  connection state (CONNECTING/ONLINE/OFFLINE) and agent count
- Implement WebSocket connection to tower-hermes with 5s timeout
- Auto-retry up to 3 times with 3s delay between attempts
- Show "OFFLINE — backend unreachable" with manual retry button
  when all auto-retries are exhausted
- Enable main.js module script

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-22 18:54:59 -04:00

The Wizard's Tower

AlexanderWhitestone.com — two rooms, nothing else.

Rooms

  • The Workshop (/world/) — A 3D space where Timmy lives. Visitors enter and interact.
  • The Scrolls (/blog/) — Alexander's words. Plain text, RSS, sovereign publishing.

Structure

index.html          Entry hall — two doors
world/              The Workshop (3D scene, Timmy presence)
blog/               The Scrolls (posts, RSS feed)
scripts/            CLI tools (aw-post for quick publishing)
static/             Shared assets (fonts, favicon)
Makefile            Build, dev, deploy

Development

make dev     # Local dev server on :8080
make build   # Build static site
make deploy  # Deploy (configure target in Makefile)

Tech Decisions (Open)

  • 3D engine: Three.js vs Babylon.js
  • Blog: Hugo vs hand-rolled static generator
  • Hosting: self-hosted Nginx/Caddy vs static CDN
  • Timmy's 3D character design

Philosophy

Two doors. No navbar. No sidebar. No footer links. You walk in, you choose a room. The Workshop is alive. The Scrolls are permanent. That's the Tower.

Description
Public-facing interface for Timmy — AlexanderWhitestone.com
Readme 74 KiB
Languages
Python 38.6%
HTML 34.6%
JavaScript 13%
Shell 10.9%
Makefile 2.9%