|
| 1 | +# Release Update Plan for v5.0.3 |
| 2 | + |
| 3 | +## Overview |
| 4 | +- Release Type: Minor (fully additive; no breaking changes) |
| 5 | +- Key Changes: Multi-org "Selected Teams" comment visibility — `organizationIds?: string[]` on `CommentVisibilityConfig`; `PrivateModeConfig` Omit widened; new `contactElement.updateOrgList()` API (+ `OrgContact`, `UpdateOrgListConfig` types); new `OrgPicker` primitive + matching wireframe component. |
| 6 | +- Breaking Changes: No. No `upgrade-guide.mdx` edit. Omit change is additive (a previously-omitted field is now accepted). |
| 7 | +- docs.json: No change. OrgPicker/updateOrgList land on existing pages already in nav (docs.json L399–401). Confirmed. |
| 8 | +- Bug fixes (7): Behavioral visibility-correctness fixes. Covered by the changelog; no separate doc-API edits. Confirmed. |
| 9 | + |
| 10 | +## Areas Requiring Updates |
| 11 | + |
| 12 | +### 1. Data Models — Agent-3 — Priority: High |
| 13 | +File: `api-reference/sdk/models/data-models.mdx` |
| 14 | +- `#### CommentVisibilityConfig` table (L271–276): add row `organizationIds` | `string[]` | No | "Target multiple organizations when `type` is `'organizationPrivate'`. Merged and de-duplicated with `organizationId`." Keep `organizationId` row. |
| 15 | +- `#### PrivateModeConfig` (L282–294): change Omit to `Omit<CommentVisibilityConfig, 'annotationId'>` (drop `| 'organizationId'`); update the prose at L282 (it currently says "excludes `annotationId` and `organizationId`"); add `organizationId` and `organizationIds` rows to the props table. |
| 16 | +- New types: add `OrgContact` (`id: string`; `name?: string`) and `UpdateOrgListConfig` (`orgList: OrgContact[]`). Place near contact/visibility models; mirror existing table format (Property | Type | Required | Description). |
| 17 | + |
| 18 | +### 2. API Methods — Agent-3 — Priority: High |
| 19 | +File: `api-reference/sdk/api/api-methods.mdx` |
| 20 | +- New `#### updateOrgList()` immediately after `updateContactList()` (ends L676) / before `updateContactListScopeForOrganizationUsers()` (L678). Mirror the `updateContactList()` block format: |
| 21 | + - Params: [`config: UpdateOrgListConfig`](/api-reference/sdk/models/data-models#updateorglistconfig) |
| 22 | + - Returns: `void`; React Hook: `useContactUtils()` |
| 23 | + - Note full-replace semantics (every call replaces the list; `{ orgList: [] }` clears); exposed on `contactElement` only. |
| 24 | +- `updateVisibility()` (L138–143) and `enablePrivateMode()` (L145–150): add a one-line `organizationIds: string[]` note (multi-org target; merged + de-duped with `organizationId`). |
| 25 | +- `addCommentAnnotation()` (L9): note `visibility` accepts `organizationIds`. |
| 26 | +File: `async-collaboration/comments/customize-behavior.mdx` |
| 27 | +- `updateVisibility` full section (L2884–2964): add `organizationIds` to the `CommentVisibilityConfig` param bullets (after L2892) and add an `organizationPrivate` example using `organizationIds: ['org-1','org-2']` in BOTH tabs (React L2898+, Other Frameworks L2932+). |
| 28 | +- `enablePrivateMode` full section: add the same `organizationIds` mention/example. |
| 29 | +- Optional: add a brief `updateOrgList` mention near the `updateContactList` full section (L2115) if Agent-3 deems the picker needs a behavior anchor; otherwise the api-methods entry suffices. |
| 30 | + |
| 31 | +### 4a. UI Customization — Wireframe — Agent-4 — Priority: Medium |
| 32 | +The wireframe `OrgPicker` is the team analogue of `UserPicker`. Mirror UserPicker's structure (container + Search/Header/Item sub-tree) ONLY IF the SDK ships those sub-parts; the release spec describes the picker as a single component analogue, so default to the container component plus the same sub-children pattern as UserPicker and confirm against the SDK. At minimum add the container entry. |
| 33 | +- File: `ui-customization/features/async/comments/comment-dialog-structure.mdx` |
| 34 | + - React tree: in `##### VeltCommentDialogWireframe.VisibilityBanner.Dropdown.Content` (L270–272), add `- VeltCommentDialogWireframe.VisibilityBanner.Dropdown.Content.OrgPicker` directly after the `...Content.UserPicker` line (L272). Add its own `#####` subsection after the UserPicker subsection (after L294) if sub-children are documented, mirroring L278–294. |
| 35 | + - HTML tree: after the user-picker wireframe block (L578, L584–600), add `velt-comment-dialog-visibility-banner-dropdown-content-org-picker-wireframe` entry mirroring the user-picker entry exactly. |
| 36 | +- File: `ui-customization/features/async/comments/comment-dialog/wireframes.mdx` |
| 37 | + - In `#### Content (Visibility Banner Dropdown)` (L4264–4293): add `<VeltCommentDialogWireframe.VisibilityBanner.Dropdown.Content.OrgPicker />` (React, after L4275) and `<velt-comment-dialog-visibility-banner-dropdown-content-org-picker-wireframe>` (HTML, after L4288). |
| 38 | + - Add a new `##### **OrgPicker (Visibility Banner Dropdown Content)**` subsection immediately after the UserPicker subsection (UserPicker starts L4360; its block ends ~L4591). Mirror the UserPicker subsection format exactly: bold h5 title, React/Other Frameworks `<Tabs>`, `<VeltWireframe>` wrapper. If documenting sub-children, mirror UserPicker's `**Search/Header/Item ...**` bold sub-entries with `(Visibility Banner Dropdown Content OrgPicker)` parenthetical suffixes. |
| 39 | +- File: `ui-customization/features/async/comments/comment-dialog/wireframe-variables.mdx` |
| 40 | + - Grep for the user-picker wireframe element here; add the analogous `OrgPicker` wireframe-variable entry only if UserPicker has one (mirror it). If UserPicker is absent from this file, no edit. |
| 41 | + |
| 42 | +### 4b. UI Customization — Primitive — Agent-5 — Priority: Medium |
| 43 | +- File: `ui-customization/features/async/comments/comment-dialog/primitives.mdx` |
| 44 | +- New entry `### VeltCommentDialogVisibilityBannerDropdownContentOrgPicker` placed immediately after the UserPicker container entry `### VeltCommentDialogVisibilityBannerDropdownContentUserPicker` (L3545–3564) — i.e. insert after L3564 / before the `...UserPickerSearch` entry (L3568). |
| 45 | +- Mirror the UserPicker container entry exactly (L3545–3564): |
| 46 | + - One-line description (team analogue): "Team picker for selecting specific organizations/teams when visibility is set to `selected-teams`." |
| 47 | + - React tab: `<VeltCommentDialogVisibilityBannerDropdownContentOrgPicker annotationId="abc123" />` |
| 48 | + - Other Frameworks tab: `<velt-comment-dialog-visibility-banner-dropdown-content-org-picker annotation-id="abc123"></velt-comment-dialog-visibility-banner-dropdown-content-org-picker>` |
| 49 | + - Props/Attributes: "Common inputs only (see [Common Inputs](#common-inputs) section)." — the primitive's three props (`annotationId`, `defaultCondition`, `inlineCommentSectionMode`) are already the documented Common Inputs (L62–70). Do NOT add a separate props table; match the sibling. |
| 50 | +- Primitives belong ONLY here, NEVER in a wireframes/components page. |
| 51 | + |
| 52 | +## Name-Mirror Spec (QA will diff exact strings) |
| 53 | +| Surface | React / dotted name | HTML element | |
| 54 | +| --- | --- | --- | |
| 55 | +| Primitive | `VeltCommentDialogVisibilityBannerDropdownContentOrgPicker` | `velt-comment-dialog-visibility-banner-dropdown-content-org-picker` | |
| 56 | +| Wireframe | `VeltCommentDialogWireframe.VisibilityBanner.Dropdown.Content.OrgPicker` | `velt-comment-dialog-visibility-banner-dropdown-content-org-picker-wireframe` | |
| 57 | + |
| 58 | +Mirror rule: wireframe path = primitive name segment-by-segment. Primitive `...VisibilityBannerDropdownContentOrgPicker` ↔ wireframe `VisibilityBanner.Dropdown.Content.OrgPicker`; HTML wireframe = primitive HTML + `-wireframe` suffix. UserPicker is the exact sibling template for every entry. UI-customization headings use the full parent-path component name; wireframes.mdx h5 titles are bold. |
| 59 | + |
| 60 | +## Implementation Sequence |
| 61 | +1. Agent-3: data-models.mdx (`organizationIds`, `PrivateModeConfig` Omit, `OrgContact`, `UpdateOrgListConfig`) then api-methods.mdx (`updateOrgList()` + notes) then customize-behavior.mdx examples. |
| 62 | +2. Agent-4: wireframe OrgPicker in comment-dialog-structure.mdx + wireframes.mdx (+ wireframe-variables.mdx if UserPicker present). Mirror UserPicker. |
| 63 | +3. Agent-5: OrgPicker primitive in comment-dialog/primitives.mdx, after UserPicker container entry. Mirror UserPicker, "Common inputs only". |
| 64 | +4. Agent-6: align terminology ("Selected Teams", OrgPicker, updateOrgList, organizationIds) repo-wide. |
| 65 | +5. Agent-7: QA — diff primitive vs wireframe name strings; confirm no breaking-change content leaked into the changelog. |
| 66 | + |
| 67 | +## Quality Checklist |
| 68 | +- [ ] `organizationIds` added to `CommentVisibilityConfig` (data-models.mdx); `organizationId` retained. |
| 69 | +- [ ] `PrivateModeConfig` Omit widened to `Omit<CommentVisibilityConfig, 'annotationId'>`; prose + table updated. |
| 70 | +- [ ] `OrgContact` + `UpdateOrgListConfig` added to data-models.mdx. |
| 71 | +- [ ] `updateOrgList()` documented in api-methods.mdx after `updateContactList()`; full-replace + `contactElement`-only noted. |
| 72 | +- [ ] `organizationIds` notes added to `updateVisibility`/`enablePrivateMode`/`addCommentAnnotation` (api-methods + customize-behavior). |
| 73 | +- [ ] OrgPicker wireframe added to comment-dialog-structure.mdx (React + HTML trees) and wireframes.mdx, mirroring UserPicker; h5 titles bold. |
| 74 | +- [ ] OrgPicker primitive added to comment-dialog/primitives.mdx after UserPicker container; "Common inputs only". |
| 75 | +- [ ] Primitive/wireframe name strings mirror segment-by-segment (per Name-Mirror Spec). |
| 76 | +- [ ] All code examples include React / Next.js and Other Frameworks tabs. |
| 77 | +- [ ] No breaking-change content in the changelog; no upgrade-guide edit. |
| 78 | +- [ ] No docs.json change (verified pages already in nav). |
| 79 | +- [ ] Log written to `.claude/logs/agent-2-planning-5.0.3.md`. |
0 commit comments