[Story-1030] Add forums source catalog

Story 1030Epic None100 files · +2744/−1183

PR #222 · pramaan-io/pramaan-app · merged 2026-06-04

How it flows

sequenceDiagram
  autonumber
  participant api as API
  participant settings as Settings UI
  participant forms as Matter / Proceeding
  api->>settings: fetch forums catalog
  settings->>settings: render Forums catalog page
  settings->>forms: forum select field reuses catalog
  forms->>forms: matter create with defaultForumId
  forms->>forms: proceeding create with forumId

Deliberate omissions — design fidelity

old forums summary endpoint fully removed
no fallback to legacy contract
page stays minimal by design
matches proposed design one-to-one

Files changed (100)

File±
design/v1/app/settings/forums-list.jsx ★+184
docs/visual-verification/story-1030/forums-catalog-storybook.png+0
docs/walkthroughs/story-1030-walkthrough.html+152
openapi/app-api.json ★+416 −188
src/app/[locale]/(app)/matters/[matterId]/page.tsx+42 −22
src/app/[locale]/(app)/matters/actions.ts+44 −10
src/app/[locale]/(app)/matters/page.tsx+17 −4
src/app/[locale]/(app)/settings/matter-configuration/forums/page.tsx+18 −7
src/components/matters/forum-select-field.tsx+58
src/components/matters/live-matter-core-fields-view.tsx+24 −3
src/components/matters/live-matter-detail-page.tsx+20 −4
src/components/matters/live-matter-fields.stories.tsx+9 −1
src/components/matters/live-matter-fields.tsx+4
src/components/matters/live-matter-frame-fields.stories.tsx+1
src/components/matters/live-matter-operating-model.stories.tsx+34 −1
src/components/matters/live-matter-operating-model.tsx+44 −6
src/components/matters/live-matter-sheet.tsx+9 −1
src/components/matters/live-matter-summary.tsx+25 −5
src/components/matters/live-matters-list-page.tsx+32 −6
src/components/matters/live-types.ts+1
src/components/matters/matters-live-register-row.tsx+29 −5
src/components/matters/proceeding-create-form.tsx ★+130
src/components/settings/forums/forums-catalog-page.stories.tsx+45
src/components/settings/forums/forums-catalog-page.tsx+57
src/components/settings/forums/forums-fixtures.ts+40
src/components/settings/forums/forums-table.tsx+46
src/gen/client/appGetForumsSummary.ts+0 −54
src/gen/client/appListForums.ts+51
src/gen/client/index.ts+1 −1
src/gen/hooks/index.ts+8 −8
src/gen/hooks/useAppGetForumsSummary.ts+0 −114
src/gen/hooks/useAppGetForumsSummarySuspense.ts+0 −113
src/gen/hooks/useAppListForums.ts+105
src/gen/hooks/useAppListForumsSuspense.ts+106
src/gen/index.ts+44 −37
src/gen/schemas/forumAvailability.json+7
src/gen/schemas/forumCategory.json+14
src/gen/schemas/forumListItem.json+69
src/gen/schemas/forumListResponse.json+82
src/gen/schemas/forumSource.json+7
src/gen/schemas/forumSummaryItem.json+0 −45
src/gen/schemas/forumsSummaryResponse.json+0 −57
src/gen/schemas/matterCreateRequest.json+11 −14
src/gen/schemas/matterDetailView.json+10 −15
src/gen/schemas/matterForumType.json+0 −16
src/gen/schemas/matterListItem.json+10 −15
src/gen/schemas/matterListResponse.json+13 −15
src/gen/schemas/matterUpdateRequest.json+9 −17
src/gen/schemas/proceedingCreateRequest.json+5
src/gen/schemas/proceedingListResponse.json+8
src/gen/schemas/proceedingUpdateRequest.json+5
src/gen/schemas/proceedingView.json+5
src/gen/types/AppGetForumsSummary.ts+0 −54
src/gen/types/AppListForums.ts+54
src/gen/types/AppListMatters.ts+0 −2
src/gen/types/ForumAvailability.ts+13
src/gen/types/ForumCategory.ts+19
src/gen/types/ForumListItem.ts+54
src/gen/types/ForumListResponse.ts+18
src/gen/types/ForumSource.ts+13
src/gen/types/ForumSummaryItem.ts+0 −34
src/gen/types/ForumsSummaryResponse.ts+0 −18
src/gen/types/MatterCreateRequest.ts+7 −5
src/gen/types/MatterDetailView.ts+9 −4
src/gen/types/MatterForumType.ts+0 −21
src/gen/types/MatterListItem.ts+9 −4
src/gen/types/MatterUpdateRequest.ts+7 −3
src/gen/types/ProceedingCreateRequest.ts+4
src/gen/types/ProceedingUpdateRequest.ts+4
src/gen/types/ProceedingView.ts+4
src/gen/types/index.ts+18 −16
src/gen/zod/appGetForumsSummarySchema.ts+0 −71
src/gen/zod/appListForumsSchema.ts+71
src/gen/zod/appListMattersSchema.ts+0 −4
src/gen/zod/forumAvailabilitySchema.ts+17
src/gen/zod/forumCategorySchema.ts+24
src/gen/zod/forumListItemSchema.ts+29
src/gen/zod/forumListResponseSchema.ts+17
src/gen/zod/forumSourceSchema.ts+17
src/gen/zod/forumSummaryItemSchema.ts+0 −29
src/gen/zod/forumsSummaryResponseSchema.ts+0 −20
src/gen/zod/index.ts+14 −12
src/gen/zod/matterCreateRequestSchema.ts+14 −7
src/gen/zod/matterDetailViewSchema.ts+15 −4
src/gen/zod/matterForumTypeSchema.ts+0 −26
src/gen/zod/matterListItemSchema.ts+15 −4
src/gen/zod/matterUpdateRequestSchema.ts+14 −7
src/gen/zod/proceedingCreateRequestSchema.ts+7
src/gen/zod/proceedingUpdateRequestSchema.ts+5
src/gen/zod/proceedingViewSchema.ts+5
src/lib/forums/gateway.ts+24
src/lib/forums/presentation.ts+5
src/lib/forums/types.ts+4
src/lib/matter-types/gateway.ts+20
src/lib/matters/format.ts+20 −5
src/lib/matters/gateway.ts+73 −31
src/lib/matters/types.ts+11 −3
tests/unit/live-matter-fields.test.tsx+13 −13
tests/unit/live-participant-panel.test.tsx+1
tests/unit/matter-actions.test.ts+2 −2