Quartz UI ↗
Browse docs
On this page
Private preview · 0.57.0-devView Markdown

QuartzUIProjectMigration: declaration reference

0.57.0-dev · beta source documentation. Native, Blueprint, Editor and rendering examples are source-reviewed, not executed in Unreal during this scan. See validation and limits.

Pinned source (source: Source/QuartzUIEditor/Public/QuartzUIProjectMigration.h) · integration recipe · practical guide

FQuartzUIProjectMigrationChange

Editor type. One explicit mutation made, or proposed by dry-run, during project migration.

Prerequisites / integration: Installed source plugin; Editor tools additionally require a compiled compatible host Editor target. Use the QuartzUIProjectMigration recipe in the host module QuartzUIEditor.

Minimal example / lifecycle: QuartzUIMigrate -Source=prebuilt -DryRun before real migration. Records own changes; rollback retains created output.

Avoid: Using deletion as conflict resolution or assuming rollback deletes assets. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: Source/QuartzUIEditor/Public/QuartzUIProjectMigration.h#L6)

FQuartzUIProjectMigrationOptions

Editor type. Shared options for the Editor action, commandlet, CI, and automation.

Prerequisites / integration: Installed source plugin; Editor tools additionally require a compiled compatible host Editor target. Use the QuartzUIProjectMigration recipe in the host module QuartzUIEditor.

Minimal example / lifecycle: QuartzUIMigrate -Source=prebuilt -DryRun before real migration. Records own changes; rollback retains created output.

Avoid: Using deletion as conflict resolution or assuming rollback deletes assets. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: Source/QuartzUIEditor/Public/QuartzUIProjectMigration.h#L15)

FQuartzUIProjectMigrationResult

Editor type. Stable machine-readable result for one apply, idempotence, dry-run, or rollback attempt.

Prerequisites / integration: Installed source plugin; Editor tools additionally require a compiled compatible host Editor target. Use the QuartzUIProjectMigration recipe in the host module QuartzUIEditor.

Minimal example / lifecycle: QuartzUIMigrate -Source=prebuilt -DryRun before real migration. Records own changes; rollback retains created output.

Avoid: Using deletion as conflict resolution or assuming rollback deletes assets. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: Source/QuartzUIEditor/Public/QuartzUIProjectMigration.h#L42)

FQuartzUIProjectMigrationService

Editor type. Deterministic, no-overwrite migration from a validated prebuilt browser app to the project-owned app model. Apply and rollback keep project content recoverable and never write below the installed plugin.

Prerequisites / integration: Installed source plugin; Editor tools additionally require a compiled compatible host Editor target. Use the QuartzUIProjectMigration recipe in the host module QuartzUIEditor.

Minimal example / lifecycle: QuartzUIMigrate -Source=prebuilt -DryRun before real migration. Records own changes; rollback retains created output.

Avoid: Using deletion as conflict resolution or assuming rollback deletes assets. Match the exact declaration below; dependent DTOs/enums are values used by this owner, not independent systems.

Exact source line (source: Source/QuartzUIEditor/Public/QuartzUIProjectMigration.h#L67)

Complete header

Source snapshot, not an additional example. Unreal annotations distinguish exposed Blueprint nodes from native-only/private methods.

#pragma once

#include "CoreMinimal.h"

/** One explicit mutation made, or proposed by dry-run, during project migration. */
struct QUARTZUIEDITOR_API FQuartzUIProjectMigrationChange
{
	FString Kind;
	FString Path;
	FString PreviousValue;
	FString NewValue;
};

/** Shared options for the Editor action, commandlet, CI, and automation. */
struct QUARTZUIEDITOR_API FQuartzUIProjectMigrationOptions
{
	FName AppId = TEXT("reference");
	FString EntryPage = TEXT("index.html");
	FString AssetPackagePath = TEXT("/Game/QuartzUIConfig/DA_QuartzUIReference");

	/** Compiled static source. Empty selects the installed plugin's legacy fixture. */
	FString SourceRoot;

	/** Absolute project-directory override used by isolated tests. */
	FString ProjectDirectory;

	/** Empty values resolve below Saved/QuartzUI/Migrations. */
	FString RecordPath;
	FString ReportPath;

	/** Copies only index.html and assets/** from the legacy plugin fixture. */
	bool bLegacyFixtureLayout = false;

	/** Restores the recorded previous default-app selection without deleting project output. */
	bool bRollback = false;

	/** Validates and reports the full plan without changing files, assets, or config. */
	bool bDryRun = false;
};

/** Stable machine-readable result for one apply, idempotence, dry-run, or rollback attempt. */
struct QUARTZUIEDITOR_API FQuartzUIProjectMigrationResult
{
	bool bSucceeded = false;
	bool bChanged = false;
	bool bIdempotent = false;
	bool bRollback = false;
	FString Code;
	FString Message;
	FName AppId;
	FString SourceRoot;
	FString DestinationRoot;
	FString AssetObjectPath;
	FString RecordPath;
	FString ReportPath;
	FString BuildIdentity;
	FString ManifestSha256;
	TArray<FQuartzUIProjectMigrationChange> Changes;
	FString Json;
};

/**
 * Deterministic, no-overwrite migration from a validated prebuilt browser app
 * to the project-owned app model. Apply and rollback keep project content
 * recoverable and never write below the installed plugin.
 */
class QUARTZUIEDITOR_API FQuartzUIProjectMigrationService final
{
public:
	static constexpr int32 SchemaVersion = 1;

	static bool Run(
		const FQuartzUIProjectMigrationOptions& Options,
		FQuartzUIProjectMigrationResult& OutResult);
};