feat(ship): rebuild repo sections as pipeline-driven kanban [ROA-264]#108
Merged
Conversation
ROA-264 v1 shipped a flat PR list per repo in a fixed
max-h-[400px] overflow-y-auto box (cramped — the "height issue") with
columns/stages that didn't reflect each repo's real process.
Rebuild: each repo section now renders the existing ShipKanban, with
visible columns derived from the project's `pipeline_kind` instead of
deploy-env-row presence:
- staged → Drafted · In Review · Ready · Merged·Pre-Staging ·
In Staging · Verifying · Promoting · In Production · Done
- direct_to_prod → … (NO In Staging, NO Verifying) · Promoting · …
- unknown/undefined → staged superset (never hide a real stage —
CLAUDE.md "enum drift downgrades, not crashes")
`verifying` is now its own column (the verifying release stage was
previously folded into in_staging). The kanban's responsive layout
(desktop: horizontal column scroll that grows with content; mobile:
collapsible) replaces the 400px scrollbox — height issue gone. The
repo header + ready/blocked/draft summary badges are preserved.
Frontend-only. No schema/backend change — pipeline_kind is the
existing per-project attribute (one repo per project in practice),
sourced via the existing useFullProject(project.id). Also exports
ProjectPipelineKind from @multica/core/types (was defined but not
re-exported). Updated two contract tests that asserted the replaced
behavior (verifying→in_staging; env-driven columns).
Verified: core+views typecheck clean, views lint 0 errors, 657/657
views tests pass.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The rebuild removed the cramped max-h-[400px] box but left columns unbounded — a long column scrolled the whole page forever. Add a bounded height (max-h-[70vh]) + overflow-y-auto to each column's card body, in both desktop and mobile branches. ColumnHeader / details summary stay outside the scroll region so headers remain pinned while cards scroll within the column. 70vh is generous (vs the disliked 400px) but caps page runaway; trivially tunable. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ROA-264 v1 disappointed: a flat PR list per repo in a fixed
max-h-[400px]scrollbox (the "height issue"), with stage categories that didn't match each repo's real process. This rebuilds it.Each repo section now renders the existing
ShipKanban, with visible columns derived from the project'spipeline_kind(not deploy-env-row guesswork):stageddirect_to_prodverifyingis now its own column (was folded intoin_staging).snapshotlogic untouched (still used for SHA-matched merged-PR placement).Frontend-only, no schema/backend change.
pipeline_kindis the existing per-project attribute (one repo/project in practice), sourced via the existinguseFullProject. Also re-exportsProjectPipelineKindfrom@multica/core/types(was defined but not surfaced).Test plan
@multica/core+@multica/viewstypecheck clean@multica/viewslint 0 errors (15 pre-existing warnings only — no new i18next violations)@multica/viewstest 657/657 pass (incl. updated contract tests for the replaced behavior + newcolumnsForPipeline/verifying coverage)Deploy note
This is a frontend-touching change → its deploy rebuilds the frontend image. Risk profile is now much better than earlier today: Pulse is off the mini (real headroom restored) and the frontend builder cache is warm from recent deploys — so this should build fast and non-disruptively. Still a conscious deploy decision given the history.
🤖 Generated with Claude Code