2.4 KiB
2.4 KiB
id, title, status, wave, depends_on, plan, spec
| id | title | status | wave | depends_on | plan | spec | |
|---|---|---|---|---|---|---|---|
| 04-frontend-plugin-registry | Frontend plugin registry contracts | completed | 1 |
|
plan.md | ../../specs/integrations/requirements/bitbucket-plugin.md |
Task 04: Frontend plugin registry contracts
Intent
Add generic revocable action, repository-provider, task-action, review-provider, integration-settings, Drawer, and responsive contracts to the frontend plugin host. Do not rewrite task-create or review screens in this task.
Owned paths
apps/web/lib/plugins/types.tsapps/web/lib/plugins/registry.tsapps/web/lib/plugins/host-api.tsapps/web/lib/plugins/host.tsapps/web/lib/plugins/active-plugin.tsapps/web/src/boot-payload.tsapps/web/lib/plugins/registry.test.tsapps/web/lib/plugins/host-api.test.tsapps/web/lib/plugins/host.test.tsapps/web/lib/plugins/active-plugin.test.tsapps/web/src/boot-payload.test.ts- Built-in registration adapters directly required by those registry files.
- Native settings integration index, route resolver, workspace navigation, icons, and tests.
Dependencies
Task 01.
Acceptance
host.api.invokeAction(...)targets declared authenticated actions; repository, task-action, and review registrations are owner-scoped and revoke on disable.- Duplicate provider ownership fails deterministically and unload aborts in-flight work; review items use external-store sources rather than plugin React hooks.
ActivePlugin.repositoryProviderIds?: string[]parses JSONrepositoryProviderIds; loader records present manifest declarations beforeinitialize, uses them as repository/review provider ownership allowlist, and preserves absent-field compatibility for older payloads.- Host exports Drawer family and supported responsive breakpoint behavior needed for native mobile plugin UI.
registerIntegrationSettings({ id, label, description, icon?, Component })contributes lifecycle-safe native global/workspace settings pages, index cards, and workspace navigation without provider-specific host rendering.
Verification
cd apps/web && pnpm test -- lib/plugins/registry.test.ts lib/plugins/host-api.test.ts lib/plugins/host.test.ts lib/plugins/active-plugin.test.ts src/boot-payload.test.ts
cd apps/web && pnpm run typecheck
Risks
Registry contracts become public plugin API. Avoid closed provider unions and avoid making a Bitbucket registration special.