Files
Ben MeadorsandClaude Opus 4.8 ab3f7f3223 Add FleetSuite backend (meshtastic_mcp.web) + fix gitignore hiding it
The "Draft of FleetSuite" commit shipped the Vue SPA, scripts, pyproject
entrypoint, and unit tests, but the meshtastic_mcp.web backend they all
reference was never committed. Root cause: the repo-root .gitignore had a
bare `web` pattern (for the firmware build's top-level web/ output) that
also matched mcp-server/src/meshtastic_mcp/web/, so `git add` silently
skipped the package and a later clean wiped the untracked files. Anchored
the build-artifact patterns (.pio/pio/web/...) to the repo root so they no
longer clobber nested web/ directories.

Reconstructed the backend from the contract pinned down by the three unit
tests and the seven Pinia stores:

- db/        aiosqlite registry: devices (serial-keyed identity that follows
             a node across ports, env pinning, offline marking), cameras,
             flash timings, test runs/results, build ledger, settings
- services/  identity (VID->role->env, hw_model resolution), control gate
             (no port action during a run), builder (SHA-keyed artifact
             cache + queue), test_runner (live pytest via reportlog tail),
             datadog (scrub + dashboard-compatible mappers + cursor reader),
             firmware (git ref), native (Docker meshtasticd), discovery
             (USB poll loop), serial_monitor (live pyserial stream),
             camera_stream (MJPEG)
- ws/hub.py  topic broadcast hub backing /ws
- app.py     FastAPI factory: REST for every store/component + /ws, serves
             the built SPA
- __main__.py the meshtastic-mcp-web entrypoint (uvicorn + pywebview window,
             --browser to serve only)

All 20 web unit tests pass; verified end-to-end against real hardware
(discovery, live serial logs, REST + WebSocket).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 16:30:31 -05:00

69 lines
1.0 KiB
Plaintext

/.pio
/pio
/pio.tar
/web
/web.tar
# ignore vscode IDE settings files
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/extensions.json
*.code-workspace
.idea
.platformio
.local
.cache
.DS_Store
Thumbs.db
.autotools
.built
.context
.cproject
.vagrant
nanopb*
flash.uf2
cmake-build*
__pycache__
*.swp
*.swo
*~
venv/
.venv/
release/
.vscode/extensions.json
/compile_commands.json
src/mesh/raspihttp/certificate.pem
src/mesh/raspihttp/private_key.pem
# Ignore logo (set at build time with platformio-custom.py)
data/boot/logo.*
# pioarduino platform
managed_components/*
arduino-lib-builder*
dependencies.lock
# JLink / RTT debug artifacts (nRF SoCs)
flash.jlink
rtt_*.txt
idf_component.yml
CMakeLists.txt
/sdkconfig.*
.dummy/*
# PYTHONPATH used by the Nix shell
.python3
.claude/scheduled_tasks.lock
userPrefs.jsonc.mcp-session-bak
# Fake-NodeDB fixture pipeline (bin/regen-fake-nodedbs.sh)
# JSONL seeds are committed (test/fixtures/nodedb/seed_v25_*.jsonl);
# compiled .proto outputs are ephemeral build artifacts.
build/fixtures/
bin/_generated/