feat: Volume & virtiofs management#19
Merged
Merged
Conversation
Copilot
AI
changed the title
[WIP] Implement volume management UI with virtiofs support
feat: Volume & virtiofs management
Jul 6, 2026
Owner
|
Follow-up update pushed to this branch. Included in this pass:
Validation run:
Latest commit: bfb1380 feat: complete volume management workflow |
Contributor
There was a problem hiding this comment.
Pull request overview
Adds end-to-end volume + bind-mount visibility and management to Porthole (Core contracts + IPC + tray backend + WinUI page), and augments the Run Wizard with mount-transport guidance and a host-folder picker.
Changes:
- Introduces
VolumeSummary,IVolumeService, and named-pipe operation codes/DTO updates for volume operations (40–43). - Implements tray-side volume listing/create/delete/prune via
wslc volumeplus mount inspection for in-use/virtiofs telemetry. - Adds a WinUI Volumes page and Run Wizard UX enhancements, with new xUnit coverage and documentation.
Reviewed changes
Copilot reviewed 18 out of 19 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/Porthole.Core.Tests/ViewModelTests.cs | Adds xUnit coverage for VolumesViewModel, VolumeSummary, and new Run Wizard telemetry formatting. |
| src/Porthole.Tray/Services/WslcBackendService.cs | Implements volume operations and mount inspection for bind mounts + in-use tracking. |
| src/Porthole.Tray/Services/NamedPipeImageCatalogServer.cs | Adds IPC dispatch cases for volume operations. |
| src/Porthole.Core/ViewModels/VolumesViewModel.cs | New MVVM viewmodel for volumes page (refresh/create/delete/prune + status/labels). |
| src/Porthole.Core/ViewModels/RunWizardViewModel.cs | Adds mount transport telemetry, review-summary annotation, and host mount prefill helper. |
| src/Porthole.Core/Services/NamedPipe/NamedPipeVolumeService.cs | Implements IVolumeService client over the existing image-catalog named pipe. |
| src/Porthole.Core/Services/NamedPipe/ImageCatalogPipeModels.cs | Adds volume operation codes and request/response fields (VolumeName, Volumes). |
| src/Porthole.Core/Services/IVolumeService.cs | Defines volume service contract for list/create/delete/prune. |
| src/Porthole.Core/Models/VolumeSummary.cs | Adds shared model for named volumes + bind mounts and UI-facing computed properties. |
| src/Porthole.App/Pages/VolumesPage.xaml.cs | Adds page initialization, delete confirmation dialog, and copy-to-clipboard action. |
| src/Porthole.App/Pages/VolumesPage.xaml | Adds WinUI volumes UI: toolbar, status bar, and volume list with per-row actions. |
| src/Porthole.App/Pages/RunWizardPage.xaml.cs | Adds host-folder picker integration to prefill bind mounts. |
| src/Porthole.App/Pages/RunWizardPage.xaml | Adds picker button and live mount-telemetry hint text to the wizard UI. |
| src/Porthole.App/MainWindow.xaml.cs | Wires navigation to the new Volumes page. |
| src/Porthole.App/MainWindow.xaml | Adds navigation item for Volumes. |
| src/Porthole.App/App.xaml.cs | Registers IVolumeService + VolumesViewModel in DI. |
| README.md | Updates feature list and adds Volume Management documentation section. |
| docs/volume-management.md | Adds detailed behavior/limitations doc for volumes, bind mounts, and wizard guidance. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
Adds a Volumes page and full IPC stack for managing named volumes and bind-mounts in the active WSL Containers session, including virtiofs driver detection and in-use tracking.
Core (
Porthole.Core)VolumeSummarymodel — name, driver, mount point, host path, size label, in-use flagIVolumeService—List/Create/Delete/PruneVolumesAsyncImageCatalogPipeModels— volume operation codes 40–43 (ListVolumes,CreateVolume,DeleteVolume,PruneVolumes);VolumeNameadded to request;Volumesadded to responseNamedPipeVolumeService— client implementation following existing pipe patternsVolumesViewModel— refresh, create, delete, prune relay commands;IsLoading,StatusMessage,VolumeCountLabelTray (
Porthole.Tray)WslcBackendService— four new async methods backed bywslc volumesubcommands; in-use detection walksMounts[]fromwslc inspectoutput per running containerNamedPipeImageCatalogServer— dispatch cases for all four volume operationsApp (
Porthole.App)VolumesPage— toolbar (create / prune / refresh), status bar, columnar volume list (name + mount point, driver, size, in-use badge) with per-row delete + confirmation dialogTests
Eight new
xUnitfacts covering refresh, create, empty-name guard, delete, prune,DriverDisplaydefault, andInUseLabelvalues.