v0.38.0
PR view fixes (#215)
- Lifecycle stepper:
/api/lifecyclenow folds only the newest non-superseded execution per status context and coalesces re-observed canonical phase keys — no more repeatedprepare/linting/plan/...per push, one segment per phase. - Terminal plan status: a non-failed finalize persists
successfor plan/verify executions — the bar no longer sticks atreport · nowand the PRs list no longer pins to "planning". - Dependency graph: run-graph edges are normalized onto the stack namespace at record time (
runner.NormalizeEdgesin allrun *drivers) and defensively in the SPA — the PR-view graph renders instead of a blank box. - Flicker-free tier panel:
.latestresource reads, first-load skeleton, per-drill-in Suspense with shimmer, and an open animation — SSE refetches and stack clicks no longer collapse the panel. - Scanability: prominent change-summary tagline, group-header count rollups, bold counts on changed stacks, dimmed "— no changes" rows.
- Demo mode: emits the real phase sequence and a matching tier environment, reproducing these scenarios end-to-end.
Rollout note: serve + ui pick these up on deploy; edge normalization at record time requires the runner image on this version (older stored executions are normalized client-side).