Migrated from design-system-swarm with fresh git history.
Old project history preserved in /home/overbits/apps/design-system-swarm
Core components:
- MCP Server (Python FastAPI with mcp 1.23.1)
- Claude Plugin (agents, commands, skills, strategies, hooks, core)
- DSS Backend (dss-mvp1 - token translation, Figma sync)
- Admin UI (Node.js/React)
- Server (Node.js/Express)
- Storybook integration (dss-mvp1/.storybook)
Self-contained configuration:
- All paths relative or use DSS_BASE_PATH=/home/overbits/dss
- PYTHONPATH configured for dss-mvp1 and dss-claude-plugin
- .env file with all configuration
- Claude plugin uses ${CLAUDE_PLUGIN_ROOT} for portability
Migration completed: $(date)
🤖 Clean migration with full functionality preserved
3.8 KiB
Browser Console Logging System
Overview
Production-ready browser console log forwarding system that captures all console output (log, info, warn, error, debug) from the admin-ui and streams it to the server for monitoring and debugging.
Architecture
Components
-
Client-Side Forwarder (
admin-ui/js/utils/console-forwarder.js)- Intercepts all console methods
- Safe circular reference detection using WeakSet
- Batching: 50 logs or 2-second intervals
- Retry mechanism: Up to 3 retries with exponential backoff
- SendBeacon API for reliable page unload logging
-
Server-Side Logger (
tools/api/browser_logger.py)- FastAPI router endpoint:
POST /api/logs/browser - Rotating file handler: 10MB max, 5 backups
- Log location:
.dss/logs/browser-logs/browser.log
- FastAPI router endpoint:
-
Proxy Configuration (
admin-ui/vite.config.js)- Vite proxy forwards
/api→http://localhost:8002 - Allows HTTPS frontend to communicate with HTTP backend
- Vite proxy forwards
Current Status
✅ All components implemented and integrated
✅ API endpoint tested and functional (server.py:259)
✅ Logs directory created: .dss/logs/browser-logs/
✅ Port configuration: Vite (3456), FastAPI (8002)
Testing
Manual API Test
```bash
curl -X POST http://localhost:8002/api/logs/browser
-H "Content-Type: application/json"
-d '{"logs": [{"level": "info", "timestamp": "2025-12-08T15:00:00Z", "message": "Test", "data": []}]}'
```
Expected response: {"status":"ok","count":1}
View Logs
```bash
View all logs
./admin-ui/scripts/dss-logs.sh
View errors only
./admin-ui/scripts/dss-logs.sh error
View warnings and errors
./admin-ui/scripts/dss-logs.sh warn ```
Test Page
Open browser to: https://localhost:3456/test-console-forwarding.html
Optional: Chrome DevTools Protocol
For deep debugging, use the CDP script:
```bash
On server
./admin-ui/scripts/start-chrome-debug.sh
On local machine (SSH tunnel)
ssh -L 9222:localhost:9222 user@server-ip
Then open chrome://inspect in local browser
```
Files Created/Modified
- ✅
admin-ui/js/utils/console-forwarder.js(NEW) - ✅
tools/api/browser_logger.py(NEW) - ✅
admin-ui/index.html(MODIFIED - loads forwarder) - ✅
admin-ui/vite.config.js(MODIFIED - proxy config) - ✅
tools/api/server.py(MODIFIED - router integration) - ✅
admin-ui/scripts/start-chrome-debug.sh(NEW) - ✅
admin-ui/scripts/dss-logs.sh(NEW) - ✅
admin-ui/test-console-forwarding.html(NEW - test page)
Safety Features
- Circular Reference Handling: WeakSet-based detection prevents JSON.stringify crashes
- Infinite Loop Prevention: No console.error in catch blocks of forwarder
- Batching: Reduces network overhead (2s or 50 logs)
- Retry Logic: Up to 3 retries with queue management
- Error Objects: Explicit serialization of Error instances (message, stack, name)
- Page Unload: SendBeacon ensures logs sent before navigation
Log Format
``` 2025-12-08 12:03:55,678 [INFO] [BROWSER] [2025-12-08T15:05:00Z] Test log message 2025-12-08 12:03:55,678 [ERROR] [BROWSER] [2025-12-08T15:05:01Z] Error description ```
Next Steps
To verify end-to-end functionality:
- Open
https://localhost:3456/in a browser - Check console output in browser DevTools
- Verify logs appear in
.dss/logs/browser-logs/browser.log
Troubleshooting
Logs not appearing
- Check FastAPI server is running:
lsof -i :8002 - Check Vite proxy:
curl -X POST https://localhost:3456/api/logs/browser -k - Check forwarder loaded: View source of
https://localhost:3456/
Permission errors
- Log directory uses project-local path (
.dss/logs/) - No root/sudo required
References
- Implementation plan:
zen_generated.code(can be deleted) - Expert analysis: Gemini 3 Pro Preview validation