- Add ☕ coffee cup on left room desk
- Move clock to wall (row 0), swap plant/bookshelf in right room
- Rotate right room PC to 270°
- Adjust lounge lamp, plant positions
- Add 🛋️ sofa (5x scale, 180° rotation) on carpet center
- Move vending machine, water cooler, fridge, bookshelf to wall
- Remove two small paintings
- Fix fractional coords crash in getInteractionPoints
Orange pixel cat spawns at a random walkable tile and continuously
wanders around the office at 60% walk speed with short pauses.
Cat cannot be selected or assigned to seats.
- Add i18n title "OpenClaw Agents 两室一厅办公室" to pixel office page
- Replace PC sprites with 💻 emoji, camera-only flash effect
- Add rotation field to PlacedFurniture/FurnitureInstance for emoji rotation
- Adjust PC positions for better visual alignment with desks
Idle characters now have a 40% chance to walk to nearby furniture
(water cooler, bookshelf, whiteboard, fridge) and linger for 5-15s.
Agents spawning from offline walk in from doorway tiles instead of
appearing directly at their seat.
Add emoji-based furniture rendering support. Camera placed at center of
right room desk with a radial flash effect every 10 seconds. Fix surface
item z-sorting for fractional positions.
- Add i18n for agent states (working/idle/offline/waiting) in zh/en
- Working tag: green with pulse animation
- Idle tag: yellow with pulse animation
- Offline tag: slate gray, clearly visible
- Working character label: green with breathing blink effect
- Add TABLE_WOOD_SM_HORIZONTAL type with transposed sprite
- Left room: 4 horizontal desks in 2x2 grid with benches and PCs
- Support fractional furniture positions (half-tile offset for centering)
- Round seat coords for pathfinding while keeping fractional x/y for visual alignment
- Use fillRect for floor tiles to eliminate hairline seams between tiles
- Add subtle half-tile grid overlay for ceramic tile floor effect
- Auto-fit zoom uses 0.5-step floor for pixel-perfect screen fit
- Add 15 tileset furniture sprites recovered from git history
- Extend FurnitureType with 15 new types (tables, chairs, bench, decor, paintings)
- Expand furniture catalog with all new entries
- Load character sprites from PNG sheets (6 characters) and wall tiles from walls.png
- Redesign default layout to 21x17 multi-room office with 40 furniture pieces
- Auto-fit zoom to screen with pixel-perfect integer scaling
- Add layout editor with floor/wall paint, erase, furniture place/move/rotate/delete tools
- Add editor state management (undo/redo, selection, drag, ghost preview)
- Add EditorToolbar and EditActionBar UI components
- Add layout persistence API (GET/POST to ~/.openclaw/pixel-office/layout.json)
- Add notification sound system (Web Audio API ascending chime on agent completion)
- Add sub-agent visualization via session JSONL parsing
- Fix agent activity API to read from agents.list config and correct session paths
- Add agent name labels above character sprites in canvas renderer
- Add i18n translations for editor features (zh/en)
- Add /api/gateway-health endpoint to check gateway service status
- Add GatewayStatus component with 10s auto-polling
- Show green checkmark when healthy, red cross with error details when down
- Click gateway badge to open OpenClaw web chat page
- Fix variable name collision in alert-monitor.tsx (setInterval shadowing)
- Add i18n translations for gateway status (zh/en)
- New /api/test-sessions endpoint: tests all agents via Gateway chatCompletions
- New button on agents page: 🔌 Test Sessions
- Session test result shown next to agent name (--/⏳/✅/❌)
- i18n support for zh-CN and en
- Add collapsible sidebar with smooth transition (expanded/collapsed)
- Move language switcher to sidebar header (top-left)
- Remove duplicate LanguageSwitcher from all sub-pages
- Add /api/test-agents endpoint for testing agent model connectivity
- Use plain CSS for sidebar layout (fix Tailwind v4 flex issues)
- Add lib/i18n.tsx with translation dictionaries, I18nProvider, useI18n hook, and LanguageSwitcher component
- Add app/providers.tsx client-side provider wrapper
- Internationalize all pages: home, models, stats, sessions, skills
- Update layout.tsx with I18nProvider
- Default language: Chinese, switchable to English via button
- Language preference persisted in localStorage
- Fix DayStat type error in stats API route