Skip to content

feat: Volume & virtiofs management#19

Merged
celloza merged 4 commits into
mainfrom
copilot/feat-volume-virtiofs-management
Jul 7, 2026
Merged

feat: Volume & virtiofs management#19
celloza merged 4 commits into
mainfrom
copilot/feat-volume-virtiofs-management

Conversation

Copilot AI commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

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)

  • VolumeSummary model — name, driver, mount point, host path, size label, in-use flag
  • IVolumeServiceList/Create/Delete/PruneVolumesAsync
  • ImageCatalogPipeModels — volume operation codes 40–43 (ListVolumes, CreateVolume, DeleteVolume, PruneVolumes); VolumeName added to request; Volumes added to response
  • NamedPipeVolumeService — client implementation following existing pipe patterns
  • VolumesViewModel — refresh, create, delete, prune relay commands; IsLoading, StatusMessage, VolumeCountLabel

Tray (Porthole.Tray)

  • WslcBackendService — four new async methods backed by wslc volume subcommands; in-use detection walks Mounts[] from wslc inspect output per running container
  • NamedPipeImageCatalogServer — dispatch cases for all four volume operations

App (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 dialog
  • DI registration and nav item wired up

Tests

Eight new xUnit facts covering refresh, create, empty-name guard, delete, prune, DriverDisplay default, and InUseLabel values.

Copilot AI linked an issue Jul 6, 2026 that may be closed by this pull request
Copilot AI changed the title [WIP] Implement volume management UI with virtiofs support feat: Volume & virtiofs management Jul 6, 2026
Copilot AI requested a review from celloza July 6, 2026 20:04
@celloza

celloza commented Jul 6, 2026

Copy link
Copy Markdown
Owner

Follow-up update pushed to this branch.

Included in this pass:

  • merged named volumes and bind mounts into the Volumes page inventory
  • surfaced mount telemetry for bind mounts and virtiofs/9P guidance
  • blocked deletion of in-use named volumes and kept bind mounts non-destructive
  • added Run Wizard host-folder picking and mount transport hints
  • added copy mount string from the Volumes page for reuse in the Run Wizard or other tools
  • updated README and added docs/volume-management.md
  • added/updated tests for the new volume and mount behavior

Validation run:

  • dotnet test tests/Porthole.Core.Tests/Porthole.Core.Tests.csproj -c Debug
  • dotnet build Porthole.slnx -c Debug

Latest commit: bfb1380 feat: complete volume management workflow

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 volume plus 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.

Comment thread src/Porthole.Core/ViewModels/VolumesViewModel.cs
Comment thread src/Porthole.Core/Models/VolumeSummary.cs Outdated
Comment thread src/Porthole.Tray/Services/WslcBackendService.cs
Comment thread src/Porthole.Tray/Services/WslcBackendService.cs
Comment thread src/Porthole.App/Pages/VolumesPage.xaml
Comment thread src/Porthole.App/Pages/VolumesPage.xaml
@celloza celloza merged commit 84bd035 into main Jul 7, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Volume & virtiofs Management

3 participants