- add canonical self-improvement/R&D Council data helpers, APIs, and tests
- persist council decisions, evidence telemetry, and work-order handoff
- harden operator UI states and require operator token by default
- ignore local R&D runtime artifacts
- New API endpoint /api/test-dm-sessions for independent DM session testing
- Remove Phase 2 DM session logic from test-platforms API
- Add "测试 DM Session" button in header
- Show DM Session status (right-aligned) next to each platform badge
- Persist DM session test results in localStorage
Add idle rank panel triggered by clicking the sofa furniture.
Parses JSONL session files to calculate online/active/idle time
per agent, sorted by idle percentage with medals and progress bars.
- Detect Telegram channel in config API (main + binding-based)
- Add Telegram group topology detection
- Add Telegram session type recognition (DM/group)
- Add testTelegram() with /getMe + /sendMessage for connectivity test
- Update PlatformBadge with sky-blue Telegram style
- Add i18n keys for Telegram (zh/en)
- Wrap useSearchParams in Suspense for /sessions and /stats pages
- 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 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 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