Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Pipeline Plan 25

Seth Ford edited this page Feb 13, 2026 · 2 revisions

The plan is complete. Here's the summary:

Implementation Plan: Public Real-Time Dashboard

Architecture: Option C — Hybrid (GitHub Pages Viewer + Dashboard API)

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.

Key Design Decisions

  1. 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.

  2. Dual connection modes — WebSocket primary (< 2s latency), REST/JSON polling fallback (5-30s). The viewer auto-detects and degrades gracefully.

  3. Sanitized public data — A PublicPipelineState interface exposes only safe, read-only data (stages, events, elapsed time, PR link). No internal state, secrets, or pipeline controls.

Files (4 new, 7 modified)

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)

12 Implementation Tasks

  1. Share token system in server.ts
  2. Public API routes (/api/public/pipeline/:token)
  3. Public WebSocket channel (/ws/live/:token)
  4. Viewer HTML (stage timeline, activity feed, meta)
  5. Viewer CSS (dark theme, heartbeat pulse, responsive)
  6. Viewer JS (WebSocket + polling, rendering)
  7. write_live_state() in pipeline.sh
  8. Live URL in progress comments
  9. shipwright dashboard live CLI
  10. GitHub Actions state push
  11. Test suite
  12. Package.json + docs

Testing: Unit tests (mock server, token lifecycle, JSON validation), integration tests (full server + WebSocket), manual browser testing, full regression (npm test across all 22 suites).

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /