Agents Builders

Current and last releases

Archived
current-and-last-releases

Created

Jun 22, 15:28

Started

Jun 22, 15:28

Completed

Jun 22, 16:05

DevOps handoff

Type

Feature

Shape

ui-only

Worktree Slug

current-and-last-releases

Repositories

mcritchie-studio

Release Train

Branch

feat/current-and-last-releases

QA URL

Production URL

ui devops

Acceptance Criteria

  • Current release shows active release or empty state
  • Last release shows most recent shipped release
  • Shipped release no longer appears as current

Expected Test Plan

  • component
  • unit

Checks Run

  • [component] GET /deployments: Current shows active slug; no-active renders empty state + kickoff chip and never the shipped slug as current; shipped renders in Last Release section
  • [unit] Release.last_shipped returns most-recent shipped and ignores active releases; Release.current is nil when none active

Agent Context

Board (/deployments) UX: split the single release module into CURRENT (active, in-progress) and LAST (most-recent shipped). Today tasks_controller.rb:30 sets @current_release = Release.featured, and Release.featured (release.rb:41) returns current||most-recent-shipped — so a shipped release shows under 'CURRENT RELEASE' once it collapses (the bug in the screenshot). Fix: (1) Release model — add self.last_shipped = where(state: 'shipped').order(Arel.sql("COALESCE(shipped_at, created_at) DESC")).first (mirrors featured's shipped branch); keep self.current (active-only, already correct). featured is only referenced at tasks_controller.rb:30 (grep to confirm) — replace that usage; remove featured if no other refs else leave it. (2) tasks_controller deployments action — @current_release = Release.current; @last_release = Release.last_shipped. (3) deployments.html.erb — pass last_release: @last_release into the board partial alongside current_release. (4) _board.html.erb (~L214) — render the deploy module when current_release OR last_release present; render a new _last_release partial after _current_release. (5) _current_release.html.erb — when @current_release is nil, render an EMPTY STATE (muted 'No current release — merge a reviewed task to establish one') that STILL shows the One-trigger 'Build and Deploy QA Release' kickoff chip (qa_release_kickoff). (6) new _last_release.html.erb — read-only, visually DIMMED/muted vs current (e.g. lighter border/opacity), label 'Last Release', show slug + shipped badge (release_state_classes) + N tasks + QA/Prod links + deployed_sha + 'shipped X ago' + member chips (reuse the member-chip markup + app_emoji_badge + deploy_target_label). Keep theme/dark-mode parity. Tests: [unit] Release.last_shipped returns most-recent shipped & ignores active; Release.current nil when none active. [component] deployments view: active release -> Current block; no active -> Current empty-state + kickoff chip; shipped exists -> Last block renders. Set devops.local_url to the worktree URL.

Stage Timeline

Who handled each stage, the time it took (measured), and the model / tokens / cost reported (best-effort) — plus who's on it right now. means the agent didn't report that metric.

No stage changes recorded yet.

Conversation

QA review feedback, agent handoffs, and follow-up notes for this task.

No task feedback has been recorded yet.

Sealed-bid sizing

Edit →

Alex (PM)

Avi (PO)

Dev

Actual