- 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
- Add checkInterval and default rules to check/route.ts AlertConfig
- Add directory creation in check/route.ts saveAlertConfig
- Make POST /api/alerts accept body and save config like PUT
- 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
- 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)