Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
f71f674
feat(container-loader): add captureContainerPendingState free function
anthony-murphy Apr 20, 2026
d7a03b1
feat(container-loader): inline attachment blob contents in captureCon…
anthony-murphy Apr 20, 2026
49df699
feat(container-loader): make captureContainerPendingState reference-a…
anthony-murphy Apr 20, 2026
220a846
test(container-loader): unit-test captureReferencedContents helpers
anthony-murphy Apr 20, 2026
ebe5f7f
refactor(container-loader): rename captureContainerPendingState to ca…
anthony-murphy Apr 20, 2026
73d1df0
style(local-server-tests): biome auto-format captureFullContainerStat…
anthony-murphy Apr 20, 2026
8a748cc
fix(container-loader): address PR review feedback on captureFullConta…
anthony-murphy Apr 20, 2026
8d89e8e
fix(container-loader): bound concurrency in captureGroupIdSnapshots too
anthony-murphy Apr 20, 2026
2e5c3f7
fix(container-loader): preserve `this` in captureGroupIdSnapshots, sk…
anthony-murphy Apr 21, 2026
57a1a76
Merge remote-tracking branch 'origin/main' into full-container-state
markfields May 1, 2026
807f73f
build fixes
markfields May 5, 2026
aa4ce9c
Revert support for loading groups
markfields May 5, 2026
2e7f66c
TMP - working notes
markfields May 5, 2026
81d04de
Review feedback items
markfields May 5, 2026
a6bb56f
Revert mc addition
markfields May 5, 2026
e4065af
changeset
markfields May 5, 2026
1d5a51b
Merge branch 'main' into full-container-state
markfields May 5, 2026
64c6cc4
lint
markfields May 5, 2026
7739827
nit: mitigate theoretical V8 scale limitation
markfields May 5, 2026
cdda9ba
Fix utf-8 encoding bug and some nits
markfields May 5, 2026
1a4bcfa
formatting
markfields May 6, 2026
d095ae5
Fix trailing blobattach ops
markfields May 7, 2026
6e66f7b
PR feedback
markfields May 7, 2026
f4621c2
CI fix and note follow-up
markfields May 7, 2026
0062623
Remove MD file used while PR in progress
markfields May 7, 2026
c21964d
Merge branch 'main' into full-container-state
markfields May 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .changeset/wide-foxes-behave.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
"@fluidframework/container-loader": minor
"@fluidframework/container-runtime": minor
"__section": feature
---
Add a new free function `captureFullContainerState` for serializing a container without loading it, for rehydrating into a future session.

Check failure on line 6 in .changeset/wide-foxes-behave.md

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [Vale.Spelling] Did you really mean 'rehydrating'? Raw Output: {"message": "[Vale.Spelling] Did you really mean 'rehydrating'?", "location": {"path": ".changeset/wide-foxes-behave.md", "range": {"start": {"line": 6, "column": 105}}}, "severity": "ERROR"}

`captureFullContainerState` produces a self-contained pending-state artifact using only driver-level services (no runtime, no live container). The output is suitable for handing to `loadExistingContainer` or `loadFrozenContainerFromPendingState` later.

This change extends the serialized `IPendingContainerState` wire format with an optional `attachmentBlobContents` field carrying base64-encoded attachment-blob bytes keyed by storage id. The new field is required by `captureFullContainerState` so attachment blobs can resolve in offline / frozen-load scenarios; an older loader receiving newer pending state silently ignores it and its attachment-blob handles will fail to resolve when live storage is unreachable.

Check warning on line 10 in .changeset/wide-foxes-behave.md

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [Microsoft.Adverbs] Remove 'silently' if it's not important to the meaning of the statement. Raw Output: {"message": "[Microsoft.Adverbs] Remove 'silently' if it's not important to the meaning of the statement.", "location": {"path": ".changeset/wide-foxes-behave.md", "range": {"start": {"line": 10, "column": 359}}}, "severity": "WARNING"}

Check warning on line 10 in .changeset/wide-foxes-behave.md

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [Microsoft.Semicolon] Try to simplify this sentence. Raw Output: {"message": "[Microsoft.Semicolon] Try to simplify this sentence.", "location": {"path": ".changeset/wide-foxes-behave.md", "range": {"start": {"line": 10, "column": 311}}}, "severity": "INFO"}

Check warning on line 10 in .changeset/wide-foxes-behave.md

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [Microsoft.SentenceLength] Try to keep sentences short (< 30 words). Raw Output: {"message": "[Microsoft.SentenceLength] Try to keep sentences short (\u003c 30 words).", "location": {"path": ".changeset/wide-foxes-behave.md", "range": {"start": {"line": 10, "column": 188}}}, "severity": "INFO"}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
// @alpha @legacy
export function asLegacyAlpha(base: IContainer): ContainerAlpha;

// @alpha @legacy
export function captureFullContainerState(input: ICaptureFullContainerStateProps): Promise<string>;

// @public
export enum ConnectionState {
CatchingUp = 1,
Expand Down Expand Up @@ -44,6 +47,14 @@ export interface IBaseProtocolHandler {
snapshot(): IQuorumSnapshot;
}

// @alpha @legacy
export interface ICaptureFullContainerStateProps {
readonly documentServiceFactory: IDocumentServiceFactory;
readonly logger?: ITelemetryBaseLogger | undefined;
readonly request: IRequest;
readonly urlResolver: IUrlResolver;
}

// @beta @deprecated @legacy (undocumented)
export interface ICodeDetailsLoader extends Partial<IProvideFluidCodeDetailsComparer> {
load(source: IFluidCodeDetails): Promise<IFluidModuleWithDetails>;
Expand Down
Loading
Loading