-
Notifications
You must be signed in to change notification settings - Fork 1
Pipeline Plan 25
The plan is complete. Here's the summary:
The best approach combines free GitHub Pages for the static viewer with the existing Bun WebSocket dashboard server for real-time data. A fallback polling mode reads static JSON from the shipwright-data branch when no server is running.
-
Share token system — Cryptographically random tokens grant read-only access to specific pipeline runs. Generated via
POST /api/share/:issue(admin-only). Tokens expire after 7 days. -
Dual connection modes — WebSocket primary (< 2s latency), REST/JSON polling fallback (5-30s). The viewer auto-detects and degrades gracefully.
-
Sanitized public data — A
PublicPipelineStateinterface exposes only safe, read-only data (stages, events, elapsed time, PR link). No internal state, secrets, or pipeline controls.
New: dashboard/public/live.html, live.css, live.js (standalone viewer), scripts/sw-live-test.sh (tests)
Modified: dashboard/server.ts (public API + WS), scripts/sw-pipeline.sh (JSON export + live URL in comments), scripts/sw-dashboard.sh (CLI live subcommand), .github/workflows/shipwright-pipeline.yml (push state to data branch), website/astro.config.mjs + dashboard guide (docs), package.json (test registration)
- Share token system in server.ts
- Public API routes (
/api/public/pipeline/:token) - Public WebSocket channel (
/ws/live/:token) - Viewer HTML (stage timeline, activity feed, meta)
- Viewer CSS (dark theme, heartbeat pulse, responsive)
- Viewer JS (WebSocket + polling, rendering)
-
write_live_state()in pipeline.sh - Live URL in progress comments
-
shipwright dashboard liveCLI - GitHub Actions state push
- Test suite
- Package.json + docs