Add Git overlay, operation tools, and virtualized preview so large folders stay responsive.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-24 15:04:04 +02:00
parent 9bf451932f
commit a3c54bbb03
127 changed files with 14748 additions and 633 deletions

View File

@@ -122,7 +122,11 @@ public sealed class TransferJob
public DateTimeOffset CreatedUtc { get; set; }
public DateTimeOffset? StartedUtc { get; set; }
public string? Error { get; set; }
public IReadOnlyList<string> AdditionalSources { get; init; } = [];
public int RetryCount { get; set; }
public string? WaitReason { get; set; }
public int SortOrder { get; set; }
public bool Dismissed { get; set; }
public IReadOnlyList<string> AdditionalSources { get; set; } = [];
}
public sealed class FileSystemItem
@@ -143,7 +147,47 @@ public sealed class FileSystemItem
public string? DisplayName { get; init; }
public long? FreeSpaceBytes { get; init; }
public long? CapacityBytes { get; init; }
public bool AvailableToImport { get; init; }
public ItemHydrationFlags Hydration { get; init; } = ItemHydrationFlags.All;
public bool IsReparsePoint => (Attributes & AttributeFlags.ReparsePoint) != 0;
public FileSystemItem Overlay(
long? sizeBytes = null,
DateTimeOffset? createdUtc = null,
DateTimeOffset? modifiedUtc = null,
int? attributes = null,
long? fileId = null,
int? reparseTag = null,
long? allocatedSizeBytes = null,
CloudPresence? cloud = null,
LocationInfo? location = null,
SizeKnowledge? sizeKnowledge = null,
string? displayName = null,
long? freeSpaceBytes = null,
long? capacityBytes = null,
bool? availableToImport = null,
ItemHydrationFlags? hydration = null)
=> new()
{
FullPath = FullPath,
Name = Name,
IsDirectory = IsDirectory,
SizeBytes = sizeBytes ?? SizeBytes,
CreatedUtc = createdUtc ?? CreatedUtc,
ModifiedUtc = modifiedUtc ?? ModifiedUtc,
Attributes = attributes ?? Attributes,
FileId = fileId ?? FileId,
ReparseTag = reparseTag ?? ReparseTag,
AllocatedSizeBytes = allocatedSizeBytes ?? AllocatedSizeBytes,
Cloud = cloud ?? Cloud,
Location = location ?? Location,
SizeKnowledge = sizeKnowledge ?? SizeKnowledge,
DisplayName = displayName ?? DisplayName,
FreeSpaceBytes = freeSpaceBytes ?? FreeSpaceBytes,
CapacityBytes = capacityBytes ?? CapacityBytes,
AvailableToImport = availableToImport ?? AvailableToImport,
Hydration = hydration ?? Hydration
};
}
public sealed record CloudPresence(
@@ -173,3 +217,13 @@ public sealed class FolderListing
public IReadOnlyList<FileSystemItem> Items { get; init; } = [];
public string? Error { get; init; }
}
public sealed class FileRelation
{
public long Id { get; set; }
public long LeftEntryId { get; init; }
public long RightEntryId { get; init; }
public FileRelationKind Kind { get; init; }
public FileRelationOrigin Origin { get; init; } = FileRelationOrigin.User;
public DateTimeOffset CreatedUtc { get; init; }
}