|
|
a9da7393c7
|
feat: Workshop interaction layer — chat input, visitor presence, bark display (#40, #41, #42)
Implements the minimum viable conversation loop for Workshop #222:
visitor arrives → sends message → Timmy barks back.
- js/visitor.js: Visitor presence protocol (#41)
- visitor_entered on load (with device detection: ipad/desktop/mobile)
- visitor_left on unload or 30s hidden (iPad tab suspend)
- visitor_message dispatched from chat input
- visitor_interaction export for future tap-to-interact (#44)
- Session duration tracking
- js/bark.js: Bark display system (#42)
- showBark() renders prominent viewport toasts with typing animation
- Auto-dismiss after display time + typing duration
- Queue system (max 3 simultaneous, overflow queued)
- Demo barks in mock mode (Workshop-themed: 222, sovereignty, chain)
- Barks also logged permanently in chat panel
- index.html: Chat input bar (#40)
- Terminal-styled input + send button at viewport bottom
- Enter to send (desktop), button tap (iPad)
- Safe-area padding for notched devices
- Chat panel repositioned above input bar
- Bark container in upper viewport third
- js/websocket.js: New message handlers
- 'bark' message → showBark() dispatch
- 'ambient_state' message → placeholder for #43
- Demo barks start in mock mode
- js/ui.js: appendChatMessage() accepts optional CSS class
- Visitor messages styled differently from agent messages
Build: 18 modules, 0 errors
Tested: desktop (1280x800) + mobile (390x844) via Playwright
Closes #40, #41, #42
Ref: rockachopa/Timmy-time-dashboard#222, #243
|
2026-03-19 01:46:04 +00:00 |
|
|
|
745208f3c8
|
feat: Integration Phase 2 — config.js, live WS client, auth, agent hot-add (#7, #11, #12)
- js/config.js: connection config with URL param + env var override
- WS URL, auth token, mock mode toggle
- Computed isLive and wsUrlWithAuth getters
- Resolves #7 (config.js)
- Resolves #11 (Phase 1 shared-secret auth via query param)
- js/websocket.js: refactored to use Config for live/mock switching
- Live mode: real WS with reconnection + exponential backoff
- Auth token appended as ?token= on WS connect
- agent_joined handler dispatches to addAgent() for hot-add
- sendMessage() public API for UI → backend communication
- js/agents.js: dynamic agent hot-add and removal
- addAgent(def): spawns 3D avatar at runtime without reload
- autoPlace(): finds unoccupied circular slot (radius 8+)
- removeAgent(id): clean dispose + connection line rebuild
- Connection distance threshold 8→14 for larger agent rings
- Resolves #12 (dynamic agent hot-add)
|
2026-03-19 01:09:59 +00:00 |
|
|
|
916acde69c
|
fix: QA sprint v1 — 7 issues resolved
Fixes:
- #22 OrbitControls damping: call updateControls() in animate loop
- #23 Empty catch blocks: add console.warn + error surfacing to chat panel
- #24 escapeHtml: add quote escaping (" '), use in renderAgentList
- #25 WS reconnect: check close code (1000/1001) before reconnecting,
add exponential backoff + heartbeat zombie detection
- #26 IDLE state visibility: brighten from near-invisible to #005500
- #5 PWA: manifest.json, service worker (network-first), theme-color,
favicon, loading screen, safe-area-inset padding, apple-mobile-web-app
- #14 Adaptive render quality: new quality.js hardware detection (low/
medium/high tiers), tiered particle counts, grid density, antialias,
pixel ratio caps
New files:
- js/quality.js — hardware detection + quality tier logic
- manifest.json — PWA manifest
- public/sw.js — service worker (network-first with offline cache)
- public/favicon.svg — SVG favicon
- icons/icon-192.svg, icons/icon-512.svg — PWA icons
|
2026-03-19 00:14:27 +00:00 |
|