Add a real web dashboard
Replaces the SHA-server stub with a FastAPI + Jinja2 + Tailwind dashboard at three pages: projects → deploys → deploy detail with captured logs. State persistence: SQLite at $SHIP_STATE_DIR (default ~/.ship/state/), with per-deploy log files alongside. workflow.py and bootstrap.py now return their captured stdout/stderr; loop.py records every working tick (in_progress → succeeded|failed) and appends the log. Project config gains an optional `github` field used by the UI to deep-link SHA cells to the corresponding GitHub commit. The deployed container now runs `python -m ship.web` instead of `ship.server`. Healthcheck `curl /` still returns 200 OK (now an HTML page); a dedicated `/health` returns JSON. Important: state lives where the daemon runs. The dashboard on the remote will look empty until the daemon is moved into the container. For real data, run the daemon and dashboard locally on the same host as the state DB. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Deploy of ship-self
- Started
- 3 hr ago 2026-05-09 16:20:44
- Finished
- 3 hr ago 2026-05-09 16:23:32
- Duration
- 2m 47s
- claude rc
- 0
Summary
---
status: succeeded
sha: d16d786d642e22c03128b8f9b0ddde828b1222e5
---
Tests passed (38 passed in 2.77s) on first run — no fixes needed.
Deploy succeeded: built image, uploaded to test.k3rnel-pan1c.com, services
started, server responding on http://test.k3rnel-pan1c.com:31040/ (sha=d16d786).
Smoke repo kicked.
Promotion: fast-forwarded `release` from a3f4118 to d16d786 and pushed to
origin. No history rewrites; release branch now matches main.
Log
raw ↗
No log captured for this run.