feat: complete download acquisition, publisher catalog browsing, and dependency management - #265
Open
undead2146 wants to merge 139 commits into
Open
feat: complete download acquisition, publisher catalog browsing, and dependency management#265undead2146 wants to merge 139 commits into
undead2146 wants to merge 139 commits into
Conversation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
This PR delivers the complete Downloads & Content Acquisition Experience along with robust Publisher Catalog Browsing, Multi-Axis Variant Management, and Profile Content/Dependency Integration for GenHub.
It establishes a modern, responsive UI backed by resilient download coordination, multi-stage progress tracking, image caching with memory & disk bounds, topological dependency resolution, and seamless profile linking via CAS (Content Addressable Storage).
Key Features & Changes
1. 🌐 Downloads Browser & Catalog Navigation
DownloadsBrowserView/DownloadsBrowserViewModel):PublisherSidebarView,SubscriptionConfirmationDialog):2. 📦 Content Detail, Variants & Bundle Components
ContentDetailView/ContentDetailViewModel):VariantSelectionView,VariantAxisGrouping,VariantSwap):3. 🔗 Dependency Resolution & Preview
DependencyResolver,DependencyPreviewView):4. 🎮 Profile Integration & Content State Tracking
ProfileSelectionView,ProfileSelectionViewModel):ContentStateService) reflecting installation status (NotInstalled,Installing,Installed,UpdateAvailable,Broken) across all profiles.ProfileContentService,ProfileEditorFacade):CasPoolManager,CasService,ProfileContentLinkerService) for atomic hardlinking/symlinking into workspace directories.5. ⚡ Infrastructure, Performance & Image Caching
ImageCacheService,ImageLoader):Converters/):DownloadModule,ContentPipelineModule,SharedViewModelModule, andManifestModule.6. 🧪 Testing & Documentation
GenHub.Tests):docs/):docs/FlowCharts/Downloads-Flow.md).docs/features/downloads.md,docs/features/content/).Verification
scripts/build-check.ps1(0 Warnings, 0 Errors).Note
Add publisher catalog browsing, variant-aware download acquisition, and dependency management
DownloadsBrowserViewModel,ContentDetailViewModel,ContentGridItemViewModel) replacing the previousDownloadsViewModel, with per-publisher filter panels, variant axis selection, and bundle component support.JsonPublisherCatalogParser,GenericCatalogDiscoverer,GenericCatalogResolver,GenericCatalogManifestFactory,PublisherSubscriptionStore, andPublisherCatalogRefreshServiceenabling third-party catalogs to be fetched, validated, and browsed.ContentOrchestratoracquisition pipeline with staged, non-regressing progress reporting, optionalIContentDelivererfallback, publisher factory post-processing for multi-variant manifests, and provenance fields (OriginalProviderName/OriginalContentId).ModDBDiscovererto use Playwright for Cloudflare-protected scraping with RSS fallback, challenge detection, richer item parsing, and multi-filter support.ProfileContentServicemulti-item add/create overloads with pairwise conflict validation, dependency acquisition, and publisher-specificGameClientsynthesis.genhub://URI scheme on Windows startup and handles catalog subscription deep-links via drag-and-drop onto the main window or IPC forwarding from secondary instances.ArchivePayloadProcessor,ControlBarPackageProcessor, andPlaywrightService(with managed Chromium provisioning) as shared infrastructure services.Macroscope summarized a53b821.
Greptile Summary
Implements an end-to-end content acquisition and profile integration experience.
Confidence Score: 5/5
The PR appears safe to merge.
No blocking failure remains.
Important Files Changed
Sequence Diagram
sequenceDiagram actor User participant Browser as Downloads Browser participant Catalog as Publisher Catalog participant Pipeline as Acquisition Pipeline participant Manifest as Manifest System participant CAS as CAS Storage participant Profile as Game Profile User->>Browser: Browse and select content Browser->>Catalog: Discover releases and variants Catalog-->>Browser: Content metadata and dependencies User->>Browser: Install selected variant Browser->>Pipeline: Acquire content Pipeline->>Pipeline: Download, validate, and process archive Pipeline->>Manifest: Generate content manifest Manifest->>CAS: Store content files CAS-->>Profile: Link content into profile workspace Profile-->>User: Content available for launchReviews (55): Last reviewed commit: "feat(downloads): complete download acqui..." | Re-trigger Greptile