3.0 KiB
3.0 KiB
id, title, status, wave, depends_on, plan, spec, decision
| id | title | status | wave | depends_on | plan | spec | decision | |
|---|---|---|---|---|---|---|---|---|
| 12e-shared-task-status | Render registered provider status in exact host task chrome | completed | 3e |
|
plan.md | ../../specs/integrations/requirements/bitbucket-plugin.md | ../../decisions/2026-08-06-plugin-code-host-dashboard-parity.md |
Task 12e: Render registered provider status in exact host task chrome
Intent
Make status presentation impossible for a code-host plugin to visually fork. Extend the existing review-provider data contract and have Kandev mount the exact shared topbar and composer CI surfaces for registered providers.
Owned paths
apps/web/lib/plugins/{types,registry,host-api}.tsand focused testsapps/web/components/task/review-panel-provider.tsand testsapps/web/components/integrations/change-request-status-*.tsxand testsapps/web/components/github/{pr-topbar-button,pr-status-chip,pr-ci-popover}.tsxapps/web/components/task/{task-top-bar,passthrough-toolbar}.tsxapps/web/components/task/chat/chat-input-area.tsx- plugin API/authoring docs
Implementation
- Add an optional normalized
taskStatustoReviewItemSummary, preserving it through registry validation without accepting provider-specific payloads. - Extract the GitHub topbar trigger, composer chip, and common CI popover/drawer body into provider-neutral host components. Adapt GitHub to those components first.
- Build one registry-backed status adapter from
useNormalizedTaskReviews; refresh via the provider's existing deduplicated lifecycle and background interval. - Mount it beside
PRTopbarButton, besidePRStatusChip, and in passthrough status. Avoid a new plugin visual slot or second provider poller. - Keep optional GitHub-only automation/merge callbacks in the shared anatomy without requiring them from Bitbucket.
TDD and acceptance
- RED registry tests prove normalized status is currently discarded.
- RED task-topbar, chat-status, and passthrough tests require registered-provider topbar and composer entries, exact shared popover content, refresh routing, and unload.
- GREEN implementation keeps all existing GitHub status tests unchanged or adapts only their provider-neutral import names.
- Run focused Vitest, web typecheck/lint, and desktop/mobile E2E assertions.
Mobile contract
Touch uses the same bounded drawer as GitHub, one internal scroll owner, and controls at least 44px tall. Desktop and mobile expose the same checks and open-Review capability.
Risks
- Provider snapshots must remain stable for
useSyncExternalStore. - Background refresh must deduplicate topbar/composer consumers and abort on unload.
- Built-in GitHub behavior, automation, and multi-PR aggregation cannot regress.
Completed verification (2026-08-06)
- Nine focused host suites passed (70 tests), plus web typecheck and lint.
- Desktop topbar and composer both rendered the shared
pr-topbar-popover-inneranatomy. - Touch emulation rendered the shared bounded CI drawer with no horizontal overflow.