Files
kandev/docs/plans/bitbucket-plugin/task-12e-shared-task-status.md
2026-08-24 11:09:03 +00:00

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
12d-host-native-task-link-parity
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}.ts and focused tests
  • apps/web/components/task/review-panel-provider.ts and tests
  • apps/web/components/integrations/change-request-status-*.tsx and tests
  • apps/web/components/github/{pr-topbar-button,pr-status-chip,pr-ci-popover}.tsx
  • apps/web/components/task/{task-top-bar,passthrough-toolbar}.tsx
  • apps/web/components/task/chat/chat-input-area.tsx
  • plugin API/authoring docs

Implementation

  1. Add an optional normalized taskStatus to ReviewItemSummary, preserving it through registry validation without accepting provider-specific payloads.
  2. Extract the GitHub topbar trigger, composer chip, and common CI popover/drawer body into provider-neutral host components. Adapt GitHub to those components first.
  3. Build one registry-backed status adapter from useNormalizedTaskReviews; refresh via the provider's existing deduplicated lifecycle and background interval.
  4. Mount it beside PRTopbarButton, beside PRStatusChip, and in passthrough status. Avoid a new plugin visual slot or second provider poller.
  5. Keep optional GitHub-only automation/merge callbacks in the shared anatomy without requiring them from Bitbucket.

TDD and acceptance

  1. RED registry tests prove normalized status is currently discarded.
  2. RED task-topbar, chat-status, and passthrough tests require registered-provider topbar and composer entries, exact shared popover content, refresh routing, and unload.
  3. GREEN implementation keeps all existing GitHub status tests unchanged or adapts only their provider-neutral import names.
  4. 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-inner anatomy.
  • Touch emulation rendered the shared bounded CI drawer with no horizontal overflow.