# Mission Control — Changelog

## v0.0.5

### Added
- **7 monitoring summary endpoints** — Neo implemented all remaining summary endpoints:
  - `GET /api/v1/monitoring/cost-summary` — Cost overview per gateway with model breakdown
  - `GET /api/v1/monitoring/cost-breakdown` — Models ranked by cost with percentage breakdown
  - `GET /api/v1/monitoring/health-summary` — Gateway health status and system metrics (CPU, RAM, disk, uptime)
  - `GET /api/v1/monitoring/cron-summary` — Cron job status with scheduling info (schedule, last/next run, failures)
  - `GET /api/v1/monitoring/sessions-summary` — Active sessions with context and token breakdown
  - `GET /api/v1/monitoring/sub-agents-summary` — Sub-agent runs with cost and token breakdown
  - `GET /api/v1/monitoring/trends` — Cost and token trends over 7d or 30d time ranges
- **All endpoints support** org-scoped filtering via `gateway_id`, pagination, and security review passed (Hudson)
- **Security audit** — Hudson reviewed and applied 1 fix for security issues
- **Python compilation verification** — All Python files compile cleanly with `py_compile`

### Changed
- Version bump: 0.0.4 → 0.0.5 (minor bump for new feature endpoints)
- Updated FUTURE.md — marked all 7 summary endpoints as DONE
- Updated README.md — API reference table now shows all 12 endpoints as Live

### Build Status
- Backend builds successfully (Docker Compose unavailable due to client version, but Python compilation verified)
- All 50+ Python files in backend compile without errors
- GatewayCollectorService operational with 4 collection intervals (cost, cron, session, health)

## v0.0.4

### Added
- **Gateway Data Collection Service** — Background asyncio task that polls gateway RPC endpoints and stores results in monitoring models
  - `gateway_collector.py` — GatewayCollectorService class with per-endpoint collection methods (cost, cron, session, health)
  - `models.py` — Pydantic schemas for parsing gateway RPC responses into typed Python objects
  - `__init__.py` — Package init, exports GatewayCollectorService
- **Collector startup/shutdown** — Added to main.py lifespan; launches collector as background task when gateways exist
- **Configurable collection intervals** via env vars: COLLECTION_INTERVAL_COST (300s), COLLECTION_INTERVAL_CRON (60s), COLLECTION_INTERVAL_SESSION (30s), COLLECTION_INTERVAL_HEALTH (60s)
- **Upsert pattern** — All DB writes use insert-or-update to avoid duplicate records

### Fixed
- Model FK definitions in monitoring.py and alert_rules.py: replaced `Column(UUID, ForeignKey(...))` with `Field(foreign_key=...)` to match codebase pattern
- Added missing `gateway_id` field to AlertRule model
- Removed OpenClawDBService inheritance from GatewayCollectorService (uses session factory pattern)
- Cleaned up duplicate/conflicting imports in collector

## v0.0.3

### Added
- **Phase 2: Monitoring database models** — 7 new SQLModel tables for gateway data collection
- **CostSnapshot** — Timestamped cost readings from gateway RPC (per-model, per-provider breakdown)
- **CronJobStatus** — Cron job state, schedule, failure tracking
- **SessionEvent** — Session lifecycle events with model, channel, context%, token counts
- **SubAgentRun** — Sub-agent execution records with duration, cost, token tracking
- **SystemHealthMetric** — CPU, RAM, swap, disk, gateway status metrics
- **AlertRule** — Configurable alert thresholds with comparison operators and cooldown
- **AlertEvent** — Triggered alert instances with acknowledgment and resolution tracking
- **Alembic migration 7a8b9c0d1e2f** — Creates all 7 monitoring tables with FKs and indexes
- **Alembic migration 8f9a0b1c2d3e** — Adds ON DELETE CASCADE to all FKs, SET NULL on acknowledged_by, 14 composite indexes
- **Security audit passed** — Hudson: 1 CRITICAL (CASCADE), 2 HIGH (mass assignment, indexes), 3 MEDIUM — all remediated

### Changed
- Frontend dev port changed from 3080 to 3037
- Migration env.py updated for transaction-per-migration to prevent failure chaining

## v0.0.2

### Added
- **Base platform forked and running** — Python/FastAPI backend + Next.js frontend copied into src/
- **Docker Compose dev environment** — compose.yml, .env, .dockerignore created
- **Dockerfile adapted** — Fixed build context for src/ layout, fixed scripts paths for webhook worker
- **All services operational** — db (Postgres 16), redis, backend (uvicorn :8000), frontend (Next.js :3000), webhook-worker
- **97 API endpoints verified** — Full OpenAPI surface confirmed at /docs
- **Git repo initialized** — main branch, initial commit 9aee2e4

### Infrastructure
- Ports mapped: backend → 8080, frontend → 3080 (host), avoiding Portainer/open-webui conflicts
- Auth mode: local (token-based, LOCAL_AUTH_TOKEN in .env)
- DB auto-migrate enabled

## v0.0.1

### Added
- **Project initialization** — STRUCTURE.md, PROJECT.md, FUTURE.md, HISTORY.md, DEVELOPMENT_LOG.md, VERSION.md
- **Source repos cloned** — openclaw-mission-control (base), openclaw-dashboard (tracking), openclaw-pixel-agents-dashboard (visualization)
- **Architecture plan** — Full 4-phase implementation plan documented in PROJECT.md