Current manifest has 3 type:custom pages out of 29 (10%). Goal: convert to typed primitives where possible (CnDetailPage / CnIndexPage / etc.) or justify with _note per ADR-024 v2 schema. Bump manifest $schema to v2.
Audit
MeetingIntegrations (route /meetings/:id/integrations) — thin wrapper that just renders CnDetailPage with sidebar.useRegistry: true. Convertible to type: "detail" with config-driven sidebar.
LiveMeetingView (route /meetings/:id/live) — genuine realtime UI (WebSocket subscriptions, frame-by-frame, animations). Stays custom with _note.
FeaturesRoadmap (route /features-roadmap) — thin wrapper around lib's CnFeaturesAndRoadmapView, but the v2 type enum doesn't include a roadmap primitive. Stays custom with _note.
Plan
- Convert
MeetingIntegrations to typed detail page (drop component from registry).
- Add
_note justification to remaining 2 customs.
- Bump manifest
$schema to app-manifest-v2.schema.json.
- Add
registry.js (5-kind v2 registry) listing remaining customs as kind: 'page'.
- Verify in browser, admin-merge to development.
Current manifest has 3 type:custom pages out of 29 (10%). Goal: convert to typed primitives where possible (CnDetailPage / CnIndexPage / etc.) or justify with
_noteper ADR-024 v2 schema. Bump manifest$schemato v2.Audit
MeetingIntegrations(route/meetings/:id/integrations) — thin wrapper that just rendersCnDetailPagewithsidebar.useRegistry: true. Convertible totype: "detail"with config-driven sidebar.LiveMeetingView(route/meetings/:id/live) — genuine realtime UI (WebSocket subscriptions, frame-by-frame, animations). Stayscustomwith_note.FeaturesRoadmap(route/features-roadmap) — thin wrapper around lib'sCnFeaturesAndRoadmapView, but the v2typeenum doesn't include a roadmap primitive. Stayscustomwith_note.Plan
MeetingIntegrationsto typeddetailpage (drop component from registry)._notejustification to remaining 2 customs.$schematoapp-manifest-v2.schema.json.registry.js(5-kind v2 registry) listing remaining customs askind: 'page'.