Block 2 — Gitea webhooks → gateway (#77):
- New server/webhooks.py: translates push/issue/PR/comment events to Matrix messages
- Gateway integration: POST /api/webhook/gitea endpoint
- Bot filtering (hermes, kimi, manus), HMAC signature verification
- 17/17 tests pass
Block 3 — Self-triggering research (#78):
- _evaluate_research_trigger() in bridge.py
- Pattern matching for question-like thoughts (I wonder, How does, etc.)
- Cooldown (10min), seed type filter, active-lock safeguards
- _extract_research_topic() extracts concise topic from thought content
- 6 new tests in test_bridge.py (14 → 17 total)
Block 4 — Model fallback chain (#79):
- New server/ollama_client.py: resilient Ollama client
- Configurable model_chain with auto-retry and model health tracking
- Integrated into ResearchEngine (replaces raw httpx, backward compatible)
- health_check() and status() for monitoring
- 11/11 tests pass, 21/21 research tests still pass
Block 5 — Bridge as SensoryBus subscriber (#80):
- register_on_bus() subscribes to 7 SensoryBus event types
- Adapter methods translate SensoryEvent → Matrix protocol messages
- Ready for Timmy dashboard integration via get_sensory_bus()
- 3 new bus integration tests in test_bridge.py (17 total)
PROTOCOL.md updated with all new capabilities.
New modules:
- scene-objects.js: Runtime 3D object registry with full primitive support,
materials, animations, groups, lights, text sprites, portals with glowing
rings + trigger zones, sub-world register/load/unload/returnHome (200 obj limit)
- zones.js: Proximity trigger zones with enter/exit events, portal/event/notify
actions, visitor position tracking
WS message types (12 new):
scene_add, scene_update, scene_remove, scene_clear, scene_batch,
world_register, world_load, world_unregister,
zone_add, zone_remove, zone_entered, zone_exited
Integration:
- websocket.js: handleMessage dispatcher for all new types
- main.js: initSceneObjects/updateSceneObjects/clearSceneObjects in render loop,
updateZones per-frame proximity checks
- PROTOCOL.md: Full spec with JSON examples for all message types
Enables agents to reshape the world at runtime via WS without redeploy.
Refs #8
#13 Sat flow particle effects — js/satflow.js:
- Gold particles fly along bezier arcs from sender to receiver
- Particle count log-scales with amount (5–20 sats)
- Staggered launch, wobble for organic feel
- Burst effect on arrival (12 particles radiate outward with gravity)
- Pool management: max 6 active flows, auto-evicts oldest
- payment_flow WS message type wired
#15 Budget stress glow — agents.js update:
- walletHealth 0.0–1.0 per agent
- Glow color smoothly blends from base → amber/red as health drops
- Stress breathing: faster + wider pulse when wallet is low
- Glow sphere opacity increases under stress
- wallet_health field on agent_state WS message
- economy_status auto-derives health from balance/reserved ratio
#17 Wallet & treasury panel — js/economy.js + HUD:
- Treasury total in sats (+ USD if available)
- Per-agent balance and daily spend with health indicator dot
- Last 3 recent transactions
- economy_status WS message type wired
- Compact panel positioned bottom-left, responsive
New modules: js/satflow.js, js/economy.js (18 modules, 82 smoke tests pass)
- js/transcript.js: Captures all chat, bark, system, and visitor messages
as structured JSON (timestamp, ISO, agent, text, type). Rolling buffer
of 500 entries persisted to localStorage.
- HUD controls: LOG badge (live count), TXT download, JSON download,
clear button. Positioned top-right, responsive on mobile.
- Integration: logEntry() called from ui.js appendChatMessage, so every
message that appears in chat is automatically transcribed.
- Smoke test updated: 64 checks now include transcript.js module/exports
and #transcript-controls DOM element.
Resolves#54.
Applies Replit PR #28 feature on top of current main:
- Root sw.js template with __PRECACHE_URLS__ placeholder
- generate-sw Vite plugin: reads build manifest, injects actual asset URLs
- manifest: true in Vite build config for asset manifest generation
- SW registration gated to import.meta.env.PROD (no dev interference)
- Preserves existing manifest.json and public/sw.js as dev fallback
Applies Replit PR #21 feature on top of current main:
- buildWorld()/teardown() lifecycle for world rebuild on context restore
- disposeWorld(), disposeAgents(), disposeEffects(), disposeInteraction()
- getAgentStates()/applyAgentStates() for state preservation across rebuilds
- webgl-recovery-overlay in index.html
- Canvas reuse on reinit (existingCanvas param in initWorld)
- Preserves: visibility-change pause, visitor init, debounced resize
Applies Replit PR #20 feature on top of current main:
- Per-agent localStorage chat history (max 100 per agent)
- Timestamps on chat entries
- Load all histories on init, sorted by time
- Clear button handler
- Auto-persist on each appendChatMessage call
3D visualization for AI agent swarms built with Three.js.
Matrix green/noir cyberpunk aesthetic.
- 4 agents: Timmy (orchestrator), Forge (builder), Seer (planner), Echo (comms)
- Central core pillar, animated green grid, digital rain
- Agent info panels, chat, task list, memory views
- WebSocket protocol for real-time state updates
- iPad-ready: touch controls, add-to-homescreen
- Post-processing: bloom, scanlines, vignette
- No build step — pure ES modules via esm.sh CDN
Created with Perplexity Computer