Skip to content

Conversation

@TommyBrosman
Copy link
Contributor

@TommyBrosman TommyBrosman commented Sep 4, 2025

Description

This change replaces SharedTreeOptions.oldestCompatibleClient with minVersionForCollab. Additionally, Shared Tree will now use the minVersionForCollab specified at the ContainerRuntime level when minVersionForCollab is not specified at the Shared Tree level.

Changes APIs and codec code to use MinimumVersionForCollab in place of FluidClientVersion. Also changes FluidClientVersion to a const object that contains MinimumVersionForCollab values.

Breaking Changes

This change breaks the following alpha APIs:

  • SharedTreeOptions: oldestCompatibleClient has been replaced with minVersionForCollab. See changeset notes on how to specify the minimum compatible version.
  • CodecWriteOptions.oldestCompatibleClient (type change)
  • makeDetachedFieldIndexCodec (parameter type change)
  • TreeAlpha.exportCompressed (parameter type change)
  • extractPersistedSchema (parameter type change)

Reviewer Guidance

Todo

@github-actions github-actions bot added area: dds Issues related to distributed data structures area: dds: tree area: framework Framework is a tag for issues involving the developer framework. Eg Aqueduct area: runtime Runtime related issues area: tests Tests to add, test infrastructure improvements, etc changeset-present dependencies Pull requests that update a dependency file public api change Changes to a public API base: main PRs targeted against main branch and removed area: tests Tests to add, test infrastructure improvements, etc labels Sep 4, 2025
- Converted FluidClientVersion to a const object with MinimumVersionForCollab values.
- Blocked out `selectFeatureFlags` in treeFactory.ts.
@github-actions github-actions bot removed the area: runtime Runtime related issues label Sep 22, 2025
- Removed FluidClientVersion.EnableUnstableFeatures since we cannot robustly support it with MinVersionForCollab. The fuzz test code that used this value now passes pkgVersion directly.
- Made FluidClientVersion actually immutable and correctly typed.
@TommyBrosman TommyBrosman marked this pull request as ready for review September 22, 2025 20:15
@TommyBrosman TommyBrosman requested a review from a team as a code owner September 22, 2025 20:15
Copilot AI review requested due to automatic review settings September 22, 2025 20:15
@TommyBrosman TommyBrosman requested a review from a team as a code owner September 22, 2025 20:15
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR replaces FluidClientVersion with MinimumVersionForCollab in APIs and codec code to better align with runtime versioning standards. The change also converts FluidClientVersion from an enum to a const object containing MinimumVersionForCollab values.

Key changes:

  • Updated API signatures to use MinimumVersionForCollab instead of FluidClientVersion
  • Converted FluidClientVersion from enum to const object with version string values
  • Updated test code to use package version instead of unstable feature flags

Reviewed Changes

Copilot reviewed 12 out of 13 changed files in this pull request and generated no comments.

Show a summary per file
File Description
packages/framework/fluid-framework/api-report/fluid-framework.alpha.api.md Updates API report to reflect type changes from FluidClientVersion to MinimumVersionForCollab
packages/dds/tree/src/treeFactory.ts Adds MinimumVersionForCollab import and selectFeatureFlags function
packages/dds/tree/src/test/shared-tree/fuzz/baseModel.ts Updates test models to use package version instead of EnableUnstableFeatures
packages/dds/tree/src/test/codec/versioned/codec.spec.ts Updates test code to use string versions and semver comparison
packages/dds/tree/src/simple-tree/api/storedSchema.ts Updates extractPersistedSchema function signature
packages/dds/tree/src/feature-libraries/schema-index/codec.ts Updates clientVersionToSchemaVersion function signature
packages/dds/tree/src/feature-libraries/chunked-forest/codec/codecs.ts Updates fluidVersionToFieldBatchCodecWriteVersion function signature
packages/dds/tree/src/codec/versioned/codec.ts Updates ClientVersionDispatchingCodecBuilder to use MinimumVersionForCollab
packages/dds/tree/src/codec/codec.ts Converts FluidClientVersion from enum to const object and updates related types
packages/dds/tree/package.json Adds semver-ts dependency
packages/dds/tree/api-report/tree.alpha.api.md Updates tree API report to reflect type changes
.changeset/warm-windows-cross.md Documents the breaking change
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

TommyBrosman and others added 2 commits October 7, 2025 13:06
- minVersionForCollab is always used as the oldestCompatibleClient version with the exception of tests.
- SharedTreeOptions no longer allows setting oldestCompatibleClient.
TommyBrosman and others added 2 commits October 8, 2025 14:33
Co-authored-by: Craig Macomber (Microsoft) <[email protected]>
Co-authored-by: Craig Macomber (Microsoft) <[email protected]>
TommyBrosman and others added 4 commits October 8, 2025 14:38
Co-authored-by: Craig Macomber (Microsoft) <[email protected]>
…eOptions.

- Renamed all usages of oldestClientVersion to minVersionForCollab for consistency across APIs.
Copy link
Contributor

@alexvy86 alexvy86 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving for docs. I had a quick look at the rest of the change and made sense to me but probably get someone else to also review.

@TommyBrosman TommyBrosman changed the title Shared Tree: Replace FluidClientVersion with MinimumVersionForCollab Shared Tree: Use minVersionForCollab instead of oldestCompatibleClient to specify min client version Oct 9, 2025
Co-authored-by: Craig Macomber (Microsoft) <[email protected]>
@TommyBrosman TommyBrosman enabled auto-merge (squash) October 9, 2025 23:59
@github-actions github-actions bot added the area: examples Changes that focus on our examples label Oct 10, 2025
@github-actions
Copy link
Contributor

🔗 Found some broken links! 💔

Run a link check locally to find them. See
https://github.com/microsoft/FluidFramework/wiki/Checking-for-broken-links-in-the-documentation for more information.

linkcheck output


> [email protected] ci:check-links /home/runner/work/FluidFramework/FluidFramework/docs
> start-server-and-test "npm run serve -- --no-open" 3000 check-links

1: starting server using command "npm run serve -- --no-open"
and when url "[ 'http://127.0.0.1:3000' ]" is responding with HTTP status code 200
running tests using command "npm run check-links"


> [email protected] serve
> docusaurus serve --no-open

[SUCCESS] Serving "build" directory at: http://localhost:3000/

> [email protected] check-links
> linkcheck http://localhost:3000 --skip-file skipped-urls.txt

 ELIFECYCLE  Command failed with exit code 1.

@TommyBrosman TommyBrosman merged commit 7f59e31 into microsoft:main Oct 10, 2025
36 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: dds: tree area: dds Issues related to distributed data structures area: examples Changes that focus on our examples area: framework Framework is a tag for issues involving the developer framework. Eg Aqueduct base: main PRs targeted against main branch changeset-present dependencies Pull requests that update a dependency file public api change Changes to a public API

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants