feat: real-time per-module install progress with count and percentage#114
feat: real-time per-module install progress with count and percentage#114Copilot wants to merge 37 commits into
Conversation
- Add C# project (src/ModuleFast/ModuleFast.csproj) targeting net8.0 - Implement ModuleFastSpec in C# with full NuGet version range support - Implement ModuleFastInfo in C# with IComparable and implicit ModuleSpecification conversion - Add ModuleFastClient HTTP client factory helper - Add stub binary cmdlets: GetModuleFastPlanCommand, ClearModuleFastCacheCommand - Remove PowerShell class definitions from ModuleFast.psm1 - Register type accelerators for ModuleFastSpec and ModuleFastInfo in psm1 - Update ModuleFast.psd1 to export binary cmdlets - Update ModuleFast.build.ps1 with BuildCSharp task - Update .gitignore to exclude build artifacts - Add ModuleFast.slnx solution file All 7 non-E2E Pester tests pass. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…pdate-TypeData Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: JustinGrote <15258962+JustinGrote@users.noreply.github.com> Agent-Logs-Url: https://github.com/JustinGrote/ModuleFast/sessions/eac9df56-fca6-48d7-8e04-c899cdbbb277
|
@copilot Convert the following powershell functions and any dependent functions into C# Cmdlets: |
- Add InstallModuleFastCommand, GetModuleFastPlanCommand, ClearModuleFastCacheCommand, ImportModuleManifestCommand cmdlets - Add ModuleFastPlanner (async HTTP planning with Task.WhenAll) - Add ModuleFastInstaller (parallel download+extract, no runspaces) - Add ModuleManifestReader (handles dynamic .psd1 manifests) - Add LocalModuleFinder (searches PSModulePaths for installed modules) - Add SpecFileReader (ModuleFast/PSResourceGet/PSDepend spec file formats) - Add PathHelper (PSModulePath management, profile updates) - Add ModuleFastCache (singleton ConcurrentDictionary request cache) - Add NuGetModels (JSON models for NuGet v3 Registration API) - Update ModuleFastInfo: make ModuleVersion, Location, Guid settable; IsLocal computed - Update ModuleFastClient: add PSCredential support, ToAuthHeader, HTTP/3 - Update ModuleFast.psm1: simplified to DLL load + type accelerators only - Update ModuleFast.psd1: FunctionsToExport=@(), CmdletsToExport with all 4 cmdlets - Update ModuleFast.tests.ps1: remove InModuleScope wrapper (Import-ModuleManifest is now a public cmdlet) - Add SpecFileType and InstallScope enums in C# Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Done in commit
|
|
@copilot Reconfigure to use Artifacts Output Layout and Central Package Management |
…ge Management (Directory.Packages.props) Co-authored-by: JustinGrote <15258962+JustinGrote@users.noreply.github.com> Agent-Logs-Url: https://github.com/JustinGrote/ModuleFast/sessions/74b5c2fa-04b4-44e8-830a-7e868b2d0871
Done in commit Artifacts Output Layout (
Central Package Management (
|
|
@copilot Recommend ways to improve the performance, and optimize for async concurrency, especially around download, decompression, and installation of modules |
…2 multi-conn, atomic cache
|
@copilot resolve the merge conflicts in this pull request |
….NET 6 FileStreamOptions IO improvements
…Async, remove variable shadowing
Merge conflicts resolved in commit
Applied across commits. Here's a summary of the .NET 6+ file I/O improvements:
|
Install progress was a static 50% during the entire install phase, with no indication of how many modules were being installed or how far along the process was.
Changes
ModuleFastInstaller.InstallModulesAsync: AddedAction<ModuleFastInfo>? onModuleInstalledcallback parameter, invoked synchronously on the completing thread after each successful install. UsesAction<T>(notIProgress<T>) to avoidSynchronizationContextmarshalling.InstallModuleFastCommand: Progress now updates per-module usingInterlocked.Increment— showsInstalling X/N Modules (P%)in real time as parallel installs complete. Percentage uses(int)(done * 100.0 / total)to avoid integer truncation.Progress now looks like:
⌨️ Start Copilot coding agent tasks without leaving your editor — available in VS Code, Visual Studio, JetBrains IDEs and Eclipse.