Skip to content

Releases: microsoft/FluidFramework

Fluid Framework v2.0.0-rc.4.0.0 (major)

13 May 19:05
ad6f8c6
Compare
Choose a tag to compare

This is a major release.

With this release, we're moving closer to General Availability of Fluid Framework 2.0 later this summer.

Breaking changes

Minor API fixes for "@fluidframework/tree" package.

Changes constructor for FieldSchema from public to private. Users should call makeFieldSchema to create instance of FieldSchema.

telemetry-utils: Internal telemetry types removed from public API surface

We have updated the tags for the following telemetry-related types in the FluidFramework: TelemetryEventCategory, TelemetryEventPropertyTypeExt, ITelemetryPropertiesExt, ITelemetryGenericEventExt, ITelemetryErrorEventExt, ITelemetryPerformanceEventExt, ITelemetryLoggerExt. For developers using any of these types, the primary action required is to transition to using the corresponding "base" type. For example, replace ITelemetryPerformanceEventExt with ITelemetryBaseEvent from @core-interfaces.

Audience & connection sequencing improvements

Here are breaking changes in Audience behavior:

  1. IAudience no longer implements EventEmmiter. If you used addListener() or removeListener(), please replace with on() & off() respectively.
  2. IAudience interface implements getSelf() method and "selfChanged" event.
  3. IContainerContext.audience is no longer optional
  4. "connected" events are now raised (various API surfaces - IContainer, IContainerRuntime, IFluidDataStoreRuntime, etc.) a bit later in reconnection sequence for "read" connections - only after client receives its own "join" signal and caught up on ops, which makes it symmetrical with "write" connections.
  • If this change in behavior breaks some scenario, please let us know immediately, but you can revert that behavior using the following feature gates:
    • "Fluid.Container.DisableCatchUpBeforeDeclaringConnected"
    • "Fluid.Container.DisableJoinSignalWait"

matrix: SharedMatrix class hidden

The SharedMatrix class has been hidden from the alpha API. In its place:

  • The constant SharedMatrix is exposed as the entrypoint for SharedMatrix creation. See documentation on ISharedObjectKind.
  • The type SharedMatrix is aliased to ISharedMatrix, which contains matrix's public API. This API has no semantic changes from previous versions.

Additionally, SharedMatrixFactory has been deprecated. Rather than construct the factory directly, use SharedMatrix.getFactory() (e.g. for usage in DataObject registries).

This change is part of a larger effort to clean up the API surface of various DDSes we have to leak less implementation details. See e.g. #20030. Most code which uses SharedMatrix should continue to function without changes.

cell: SharedCell now uses ISharedObjectKind and does not export class

Most users of SharedCell just need to replace usages of the SharedCell type with ISharedCell.

counter: SharedCounter now uses ISharedObjectKind and does not export the class

Most users of SharedCounter should be unaffected as long as they stick to the factory patterns supported by ISharedObjectKind.

SharedString now uses ISharedObjectKind and does not export the factory

Most users of SharedString should be unaffected as long as they stick to the factory patterns supported by ISharedObjectKind. If the actual class type is needed it can be found as SharedStringClass.

Rename AzureMember.userName to AzureMember.name and IMember.userId to IMember.id

  1. Renamed AzureMember.userName to AzureMember.name to establish uniform naming across odsp-client and azure-client.
  2. Renamed IMember.userId to IMember.id to align with the properties received from AFR.

copyContainer API replaced by the viewContainerVersion API

The copyContainer API has been removed in favor of the viewContainerVersion API. viewContainerVersion does not automatically produce a new container, but instead retrieves the existing container version for reading only. To produce a new container with the data, use the normal createContainer API surface and write the data prior to attaching it.

Deprecated members of IFluidHandle are split off into new IFluidHandleInternal interface

Split IFluidHandle into two interfaces, IFluidHandle and IFluidHandleInternal. Code depending on the previously deprecated members of IFluidHandle can access them by using toFluidHandleInternal from @fluidframework/runtime-utils/legacy.

External implementation of the IFluidHandle interface are not supported: this change makes the typing better convey this using the ErasedType pattern. Any existing and previously working, and now broken, external implementations of IFluidHandle should still work at runtime, but will need some unsafe type casts to compile. Such handle implementation may break in the future and thus should be replaced with use of handles produced by the Fluid Framework client packages.

container-runtime: Make op grouping On by default

Op grouping feature reduces number of ops on the wire by grouping all ops in a batch. This allows applications to substantially reduce chances of being throttled by service when sending a lot of ops. This feature could be enabled only by applications that have consumed 2.0.0-internal.7.0.2 version and have application version based on it saturated in the marker (to 99.99% or higher). Enabling it too soon will result on old client crashing when processing grouped ops.

The feature has been proven in production in Loop app, as it was enabled through feature gates at 100% in PROD. All internal applications (Loop, Whiteboard) that send telemetry to our common Kusto tenant are already at or above minimal required version of runtime.

If your application does not satisfy these deployment requirements, please disable op grouping via passing IContainerRuntimeOptions.enableGroupedBatching = false when calling ContainerRuntime.load().

Type Erase IFluidDataStoreRuntime.deltaManager

Make IFluidDataStoreRuntime.deltaManager have an opaque type. Marks the following types which were reachable from it as alpha:

  • IConnectionDetails
  • IDeltaSender
  • IDeltaManagerEvents
  • IDeltaManager
  • IDeltaQueueEvents
  • IDeltaQueue
  • ReadOnlyInfo

As a temporary workaround, users needing access to the full delta manager API can use the @alpha toDeltaManagerInternal API to retrieve its members, but should migrate away from requiring access to those APIs.

Implementing a custom IFluidDataStoreRuntime is not supported: this is now indicated by it being marked with @sealed.

Make several driver types no longer public

Move the following types from @public to @alpha:

  • ITokenClaims
  • IDocumentMessage
  • IClientConfiguration
  • IAnyDriverError
  • IDriverErrorBase
  • DriverErrorTypes

DriverErrorTypes is no longer exported from the fluid-framework package.

Fluid Framework v2.0.0-rc.2.0.7 (patch)

04 May 00:13
c8b2841
Compare
Choose a tag to compare

What's Changed

  • Revert change to remove encoding of handles out of the DDS #20974
  • rc.2 Port: Fix "savedOp" metadata property propagation for grouped ops (#20837) #20902
  • [bump] client: 2.0.0-rc.2.0.6 => 2.0.0-rc.2.0.7 (patch) #20893

Full Changelog: client_v2.0.0-rc.2.0.6...client_v2.0.0-rc.2.0.7

build-tools v0.38.0 (minor)

06 May 22:34
3bfe7dd
Compare
Choose a tag to compare

This is a minor release.

Fluid Framework v2.0.0-rc.3.0.3 (patch)

29 Apr 15:27
ee2267c
Compare
Choose a tag to compare

What's Changed

  • [rc3] Make ./internal/test exports conditional #20828

Full Changelog: client_v2.0.0-rc.3.0.2...client_v2.0.0-rc.3.0.3

Fluid Framework v2.0.0-rc.2.0.6 (patch)

29 Apr 16:14
a832e88
Compare
Choose a tag to compare

What's Changed

  • [rc2] Make ./internal/test exports conditional #20830

Full Changelog: client_v2.0.0-rc.2.0.5...client_v2.0.0-rc.2.0.6

Fluid Framework v2.0.0-rc.2.0.5 (patch)

26 Apr 18:12
06c6ff3
Compare
Choose a tag to compare

What's Changed

  • [bump] client: 2.0.0-rc.2.0.4 => 2.0.0-rc.2.0.5 (patch) #20821
  • [rc.2.0 Port] Compression code could sent spurious ops in disconnected state #20820

Full Changelog: client_v2.0.0-rc.2.0.4...client_v2.0.0-rc.2.0.5

Fluid Framework v2.0.0-rc.2.0.4 (patch)

24 Apr 00:41
675f28f
Compare
Choose a tag to compare

What's Changed

  • [RC2] GC: Port recent telemetry changes #20795
  • [main > Release/Client/rc2]: Use tenant domain instead of siteUrl in /shares api in ODSP driver (#20738) #20770
  • [bump] client: 2.0.0-rc.2.0.3 => 2.0.0-rc.2.0.4 (patch) #20758

Full Changelog: client_v2.0.0-rc.2.0.3...client_v2.0.0-rc.2.0.4

Fluid Framework v2.0.0-rc.3.0.2 (patch)

23 Apr 21:21
92a29d7
Compare
Choose a tag to compare

What's Changed

  • Revert: Reset joinSession cache only on connect_document_error (#20784) #20789
  • [RC3] GC: Port recent telemetry changes #20787
  • [main > Release/Client/rc3]: Use tenant domain instead of siteUrl in /shares api in ODSP driver (#20738) #20769
  • [Port 3.0] Rc3 port telemetry downgrade for latestSummaryRefSeqNumMismatch #20762
  • 2.0.0-RC3: DocumentSchemaController: Fix 0x950 assert ("time should move forward only") #20691
  • Bump client patch 2.0.0 rc.3.0.2 #20740

Full Changelog: client_v2.0.0-rc.3.0.1...client_v2.0.0-rc.3.0.2

Fluid Framework v2.0.0-rc.1.0.9 (patch)

24 Apr 00:33
9417d80
Compare
Choose a tag to compare

What's Changed

  • [main > Release/Client/rc1]: Use tenant domain instead of siteUrl in /shares api in ODSP driver (#20738) #20771
  • [main>rc1]: build: Narrow workspace definitions #20656
  • [bump] client: 2.0.0-rc.1.0.8 => 2.0.0-rc.1.0.9 (patch) #20469

Full Changelog: client_v2.0.0-rc.1.0.8...client_v2.0.0-rc.1.0.9

Fluid Framework v2.0.0-rc.3.0.1 (patch)

18 Apr 23:33
0920904
Compare
Choose a tag to compare

What's Changed

  • tree(fix): Remove accidentally exposed identifier API #20720
  • build: Patch API-Extractor to ensure we validate cross-package release tag compatibility (#20696) #20699
  • [bump] client: 2.0.0-rc.3.0.0 => 2.0.0-rc.3.0.1 (patch) #20685

Full Changelog: client_v2.0.0-rc.3.0.0...client_v2.0.0-rc.3.0.1