When accessing the dashboard over LAN (e.g. http://192.168.x.x:3000),
clicking session links would redirect to http://localhost:18789/... which
is unreachable from other devices.
Changes:
- Add lib/gateway-url.ts helper to build gateway URLs using window.location.hostname
- Replace hardcoded localhost in page.tsx, sessions/page.tsx, pixel-office/page.tsx
- Add resolveGatewayUrl() in gateway-status.tsx to fix gateway health link
OpenClaw supports both string and object formats for agent model config:
- String: "provider/model-name"
- Object: { primary: "provider/model-name", fallbacks: [...] }
The dashboard assumed model is always a string, causing
'TypeError: t.model.startsWith is not a function' when the
object format is used.
Changes:
- Extract model string from object format (primary/default fallback)
- Add typeof guard before .startsWith() calls on agent.model
- 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
Switch photo comments from canvas to DOM elements so they can
float above the canvas through the top bar to the page top.
Also enlarge bubble font size for readability.
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.
Fetches latest release from GitHub API with 24h server cache.
Preloads on page mount, click phone emoji to view version, date,
release notes and GitHub link.
Characters walking to the photograph now display floating photo critique
slang (e.g. 毒!, 刀锐奶化, 德味大师学习了). Multiple bubbles float up
simultaneously like code snippets. Also tuned wander/rest timers for
more lively idle behavior and increased interaction chance.
Working characters now emit floating code snippets that drift upward and
fade out. Snippet pool includes JS/TS, Python, LLM/AI, prompt patterns,
dev slang, Chinese programmer memes, and OpenClaw CLI commands.
Add interactive camera furniture in pixel office - clicking the camera
in non-edit mode loads a random photo from my-photographic-works (13 WebP
images) onto the wall. Also converts original PNGs to WebP format.
Show session count, message count, token usage and today's avg response
time when hovering over pixel characters. Data fetched from /api/config
with 30s polling. Supports i18n.
- 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
Extract GitHub username from git remote URL, fetch public contributions
page, parse into 52×7 week format with 24h cache. Falls back to mock
data when fetch fails.