When main.js fails to load (network error, CORS, etc.), users were stuck on "INITIALIZING" forever with no error or recovery option. Changes: - Add inline 8s timeout that shows error state if main.js never boots - Show /api/ui fallback link when workshop is offline - Update offline message to "WORKSHOP OFFLINE" Fixes #7 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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
Languages
Python
38.6%
HTML
34.6%
JavaScript
13%
Shell
10.9%
Makefile
2.9%