Files
mqtt-explorer/.github/copilot-instructions.md
2025-12-23 23:07:02 +01:00

2.9 KiB

copilot-instructions.md - Agent Long-Term Memory

META-INSTRUCTIONS (IMMUTABLE)

  1. Long-term memory: If you learn something during a session that would save time in future sessions, add it to .github/copilot-instructions.md
  2. Paper knowledge must go: If something is no longer true, update or remove it immediately
  3. Evaluate after every session: Consider whether the instructions need updates based on what you learned
  4. Concise and useful: All information must be actionable, current, and concise

Test Commands

Unit tests:

  • yarn test - All unit tests (app + backend)
  • yarn test:app - Frontend tests only
  • yarn test:backend - Backend tests only

Integration tests:

  • yarn test:ui - Browser tests (requires yarn build first)
  • yarn test:demo-video - UI recording (requires Xvfb, mosquitto, tmux, ffmpeg)
  • yarn test:mcp - Model Context Protocol tests
  • yarn test:all - All tests (unit + demo-video)

CI jobs: test, ui-tests, demo-video, test-browser

Browser Mode

Prerequisites: Node.js ≥24, Yarn, Mosquitto broker (for testing)

Development (hot reload):

export MQTT_EXPLORER_USERNAME=admin MQTT_EXPLORER_PASSWORD=yourpass
yarn dev:server
# Backend: http://localhost:3000, Frontend: http://localhost:8080 (use this one)

Production:

yarn build:server
export MQTT_EXPLORER_USERNAME=admin MQTT_EXPLORER_PASSWORD=yourpass
yarn start:server  # http://localhost:3000

Build artifacts: dist/src/server.js, app/build/*.js, app/build/index.html

Debugging Browser Mode

DevTools checks:

  • Console: JavaScript errors, CSP errors (security headers), WebSocket issues
  • Network: Static asset loading, WebSocket status, API auth

Common issues:

  • Blank page/CSP errors: Add 'unsafe-eval' to scriptSrc in src/server.ts helmet config
  • Auth loop: WebSocket auth failing - check Network → WS → Messages and server logs
  • Theme errors: Verify both ThemeProvider and LegacyThemeProvider in app/src/index.tsx

Expected warnings (non-fatal):

  • React 18 + Material-UI v5 type warnings
  • IpcRendererEventBus errors (no Electron IPC in browser mode)
  • MUI locale, componentWillReceiveProps, ACE editor warnings

WebSocket debugging:

node dist/src/server.js 2>&1 | tee server.log
# Check DevTools → Network → WS → Messages for handshake
# CORS: check ALLOWED_ORIGINS env var

Security notes:

  • unsafe-eval in CSP required for webpack (security tradeoff)
  • Never hardcode credentials (use env vars)
  • Production: use HTTPS with reverse proxy
  • Rate limit: 5 auth attempts/15min/IP
  • File upload limit: 16MB

Key files:

  • src/server.ts - Express server, security middleware
  • app/webpack.browser.config.mjs - Browser webpack config
  • app/src/browserEventBus.ts - Socket.io client
  • app/src/components/BrowserAuthWrapper.tsx - Auth dialog
  • app/src/index.tsx - React entry, theme providers