- Replace FormData file upload with presigned URL two-step upload - Add batch-upload contract for folder uploads (reduces N+M to 1+M requests) - Remove deprecated createFile contract and useCreateAppAssetFile hook - Remove checksum field from AppAssetNode and AppAssetTreeView types - Add upload-to-presigned-url utility for direct storage uploads
Remove types that don't match backend API: - AppAssetFileContentResponse (unused, had extra metadata field) - CreateFilePayload (unused, FormData built manually) - metadata field from UpdateFileContentPayload
Add frontend oRPC integration for the existing backend download URL endpoint to enable file downloads from the asset tree.
- Add TypeScript types for app asset management (types/app-asset.ts) - Add oRPC contract definitions with nested router pattern (contract/console/app-asset.ts) - Add React Query hooks for all asset operations (service/use-app-asset.ts) - Integrate app asset contracts into console router Endpoints covered: tree, createFolder, createFile, getFileContent, updateFileContent, deleteNode, renameNode, moveNode, reorderNode, publish