bbsbot 2026-02-22
Docker packaging, dashboard UX overhaul, swarm spawn fixes, and MCP screen stripping
50 files · 1,643+ · 504-

Docker packaging

4 files changed
  • Dockerfile Production image with dev target for editable live source mounts
  • docker-compose.yml Dev and production service definitions (37 lines)
  • .dockerignore Docker ignore rules (19 lines)
  • paths.py Runtime data path routing through BBSBOT_DATA_DIR
  • Added Dockerfile (55 lines) — production image; dev target with editable install for live source mounts baseline internal
    1 file
    • Dockerfile
  • Added docker-compose.yml (37 lines) — dev and production service definitions baseline internal
    1 file
    • docker-compose.yml
  • Added .dockerignore (19 lines) instantiate internal
    1 file
    • .dockerignore
  • Image optimized from 550MB → 180MB streamline internal
    1 file
    • Dockerfile
  • src/bbsbot/paths.py (20 lines added) — runtime data path routing through BBSBOT_DATA_DIR instantiate internal
    1 file
    • paths.py

Dashboard UX overhaul

2 files changed
  • dashboard.html Major UX rework — spawn bar groups, game indicators, pause controls, pool views (633 lines changed)
  • dashboard.js Dashboard JS updates supporting the UX overhaul (314 lines changed)
  • src/bbsbot/web/dashboard.html (633 lines changed), web/static/dashboard.js (314 lines changed) — major UX rework: decouple behavioral
    2 files
    • dashboard.html
    • dashboard.js

Swarm spawn fixes

4 files changed
  • bot_process.py Concurrent spawn batches no longer cancel each other; bot ID collision prevented; dead bot entries removed after spawning replacements
  • spawn.py Spawn improvements (77 lines)
  • __init__.py Manager init updates (21 lines)
  • models.py Manager model updates (5 lines)
  • src/bbsbot/manager/bot_process.py (101 lines) — concurrent spawn batches no longer cancel each other; bot ID collision on sequential spawn-batch calls prevented; dead bot entries removed after spawning replacements streamline internal
    1 file
    • bot_process.py
  • src/bbsbot/api/swarm/spawn.py (77 lines) — spawn improvements interface behavioral
    1 file
    • spawn.py
  • src/bbsbot/manager/__init__.py (21 lines), manager/models.py (5 lines) decouple internal
    2 files
    • __init__.py
    • models.py

MCP screen stripping

2 files changed
  • server.py Screen content stripped from tool responses by default (62 lines)
  • control_hijack.py Hijack tool update (5 lines)
  • src/bbsbot/mcp/server.py (62 lines) — screen content stripped from tool responses by default interface behavioral
    1 file
    • server.py
  • src/bbsbot/games/tw2002/mcp_tools/control_hijack.py (5 lines) — hijack tool update decouple internal
    1 file
    • control_hijack.py

Other fixes and cleanup

9 files changed
  • name_data.py Name data additions (30 lines)
  • name_generator.py Name generator updates (16 lines)
  • bot_worker.py Worker updates (20 lines)
  • status_reporter.py Status reporter updates (19 lines)
  • lifecycle.py Lifecycle updates (13 lines)
  • settings.py Settings updates (6 lines)
  • log_service.py Log service updates (3 lines)
  • pyproject.toml Project config updates (2 lines)
  • .gitignore Gitignore updates — added *.png screenshot patterns
  • src/bbsbot/games/tw2002/name_data.py (30 lines), name_generator.py (16 lines) — name data additions decouple internal
    2 files
    • name_data.py
    • name_generator.py
  • src/bbsbot/games/tw2002/worker/bot_worker.py (20 lines), worker/status_reporter.py (19 lines) decouple internal
    2 files
    • bot_worker.py
    • status_reporter.py
  • src/bbsbot/games/tw2002/multi_character/lifecycle.py (13 lines) decouple internal
    1 file
    • lifecycle.py
  • src/bbsbot/settings.py (6 lines), log_service.py (3 lines) baseline internal
    2 files
    • settings.py
    • log_service.py
  • Deleted dashboard-.png, tmp/pw-.png screenshot artifacts decouple behavioral
    2 files
    • dashboard-after-fix.png
    • dashboard-current.png
  • pyproject.toml (2 lines), .gitignore (4 lines), uv.lock (4 lines) baseline internal
    3 files
    • pyproject.toml
    • .gitignore
    • uv.lock