Compat: Add minVersionForCollab option to declarative model and deprecate CompatibilityMode#27212
Compat: Add minVersionForCollab option to declarative model and deprecate CompatibilityMode#27212scottn12 wants to merge 10 commits intomicrosoft:mainfrom
Conversation
|
Hi! Thank you for opening this PR. Want me to review it? Based on the diff (310 lines, 25 files), I've queued these reviewers:
Toggle the reviewer checkboxes above to adjust, then tick the box below to start:
|
There was a problem hiding this comment.
Pull request overview
This PR updates the Fluid declarative model and service client APIs to support specifying an explicit minVersionForCollab (now aligned with the newer cross-client compatibility policy), while deprecating the legacy CompatibilityMode abstraction.
Changes:
- Promote
MinimumVersionForCollabto a@publicAPI in@fluidframework/runtime-definitions. - Add optional
minVersionForCollab?: MinimumVersionForCollabparameters to Tinylicious/Azure client container create/load flows and plumb through to the declarative model runtime factory creation. - Deprecate
CompatibilityMode(andminVersionForCollabOverride) while keepingcompatibilityModerequired for now to select runtime defaults.
Reviewed changes
Copilot reviewed 29 out of 30 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| pnpm-lock.yaml | Adds workspace links for @fluidframework/runtime-definitions where newly imported. |
| packages/service-clients/tinylicious-client/src/TinyliciousClient.ts | Adds minVersionForCollab param and forwards it into runtime factory creation. |
| packages/service-clients/tinylicious-client/package.json | Adds dependency on @fluidframework/runtime-definitions. |
| packages/service-clients/tinylicious-client/api-report/tinylicious-client.public.api.md | Reflects new optional minVersionForCollab API surface. |
| packages/service-clients/tinylicious-client/api-report/tinylicious-client.beta.api.md | Reflects new optional minVersionForCollab API surface. |
| packages/service-clients/tinylicious-client/api-report/tinylicious-client.alpha.api.md | Reflects new optional minVersionForCollab API surface. |
| packages/service-clients/end-to-end-tests/azure-client/src/test/AzureClientFactory.ts | Updates test factory typing to include optional minVersionForCollab. |
| packages/service-clients/azure-client/src/interfaces.ts | Extends internal factory hook typing to accept optional minVersionForCollab. |
| packages/service-clients/azure-client/src/AzureClient.ts | Adds minVersionForCollab param(s) and forwards into runtime factory creation. |
| packages/service-clients/azure-client/package.json | Adds dependency on @fluidframework/runtime-definitions. |
| packages/service-clients/azure-client/api-report/azure-client.public.api.md | Reflects new optional minVersionForCollab API surface and deprecates CompatibilityMode export. |
| packages/service-clients/azure-client/api-report/azure-client.legacy.public.api.md | Same as public API report for legacy build. |
| packages/service-clients/azure-client/api-report/azure-client.legacy.beta.api.md | Same as public API report for legacy beta build. |
| packages/service-clients/azure-client/api-report/azure-client.beta.api.md | Same as public API report for beta build. |
| packages/runtime/runtime-definitions/src/compatibilityDefinitions.ts | Promotes MinimumVersionForCollab from @beta to @public. |
| packages/runtime/runtime-definitions/api-report/runtime-definitions.public.api.md | API report updated to include MinimumVersionForCollab as public. |
| packages/runtime/runtime-definitions/api-report/runtime-definitions.legacy.public.api.md | API report updated to include MinimumVersionForCollab as public. |
| packages/runtime/runtime-definitions/api-report/runtime-definitions.legacy.beta.api.md | Updates extracted tag for MinimumVersionForCollab to public. |
| packages/runtime/runtime-definitions/api-report/runtime-definitions.legacy.alpha.api.md | Updates extracted tag for MinimumVersionForCollab to public. |
| packages/runtime/runtime-definitions/api-report/runtime-definitions.beta.api.md | Updates extracted tag for MinimumVersionForCollab to public. |
| packages/framework/fluid-static/src/utils.ts | Introduces helper to resolve min-version and runtime defaults; keeps compatibility-mode mapping. |
| packages/framework/fluid-static/src/types.ts | Marks CompatibilityMode deprecated in favor of minVersionForCollab. |
| packages/framework/fluid-static/src/treeRootDataObject.ts | Plumbs minVersionForCollab through declarative tree runtime factory creation. |
| packages/framework/fluid-static/src/rootDataObject.ts | Plumbs minVersionForCollab through declarative DO-provider runtime factory creation. |
| packages/framework/fluid-static/src/compatibilityConfiguration.ts | Adds deprecated-import lint suppression for now-deprecated CompatibilityMode. |
| packages/framework/fluid-static/api-report/fluid-static.public.api.md | Marks CompatibilityMode deprecated in extracted API. |
| packages/framework/fluid-static/api-report/fluid-static.legacy.public.api.md | Marks CompatibilityMode deprecated in extracted legacy API. |
| packages/framework/fluid-static/api-report/fluid-static.legacy.beta.api.md | Marks CompatibilityMode deprecated and reflects added minVersionForCollab param in legacy beta API. |
| packages/framework/fluid-static/api-report/fluid-static.beta.api.md | Marks CompatibilityMode deprecated in extracted beta API. |
| packages/framework/fluid-static/api-report/fluid-static.alpha.api.md | Marks CompatibilityMode deprecated in extracted alpha API. |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
|
Rather than keeping these two types separate, where practical in API surface have them as a single input.
|
@jason-ha, updated in latest to do this |
|
🔗 No broken links found! ✅ Your attention to detail is admirable. linkcheck output |
Description
This PR updates the declarative model to accept any (valid)
minVersionForCollab. This is intended to replace the existingCompatibilityModetype (deprecated in this PR), which accepts either"1"or"2". This was done to ensure the declarative model is aligned to support the latest changes to the cross-client compat policy (see #27064).The following are the major changes in this PR:
MinimumVersionForCollabpromoted from a beta to public API. This was done so it could be used in public declarative model APIs.CompatibilityModeparam increateDOProviderContainerRuntimeFactory()now also acceptsMinimumVersionForCollab(previously only theCompatibilityModetype).CompatibilityModetype (will be removed in 3.0).minVersionForCollabOverride(will be removed in 3.0).Reviewer Guidance
MinimumVersionForCollabwill require API council review. If it's easier, this can be split into a separate PR.Misc
AB#72040