fix(proxmox): fix VM actions, remove Disk column, add Create VM #130

Merged
sarman merged 4 commits from fix/proxmox-vm-actions-v3 into beta 2026-06-21 23:45:17 +00:00
Owner

Summary

  • Issue 1 — VM actions silent: Root cause was missing <Toaster> mount in App.tsx. All toast.*() calls were no-ops. Also added missing dialog:allow-confirm capability so VM delete confirmation works.
  • Issue 2 — Disk column removed: PVE cluster/resources returns only static disk allocation, not live usage — column was misleading. Removed from header, row, and computed values.
  • Issue 3 — Add VM: New list_proxmox_nodes command (real GET /nodes), new create_proxmox_vm command with server-side validation (VMID range, numeric bounds, path-injection guard on node/storage/bridge, ISO comma-injection guard). CreateVmDialog component with node/storage auto-discovery. "Add VM" button in VMsPage.
  • MigrationDialog now uses list_proxmox_nodes instead of inferring targets from the local VM list.
  • Added missing suspendProxmoxVm, resumeProxmoxVm, listProxmoxNodes, createProxmoxVm client wrappers.

Test plan

  • Connect to Proxmox cluster — verify Start/Stop/Reboot/Shutdown/Suspend/Resume all show toast feedback
  • Migrate dialog shows actual cluster nodes
  • Create VM via "Add VM" dialog — confirm appears in PVE web UI
  • Disk column absent from VM list
  • Delete VM shows browser confirm dialog
  • ISO with comma injection rejected with clear error
  • CI: 446 Rust tests + 405 frontend tests — all pass
## Summary - **Issue 1 — VM actions silent**: Root cause was missing `<Toaster>` mount in `App.tsx`. All `toast.*()` calls were no-ops. Also added missing `dialog:allow-confirm` capability so VM delete confirmation works. - **Issue 2 — Disk column removed**: PVE `cluster/resources` returns only static disk allocation, not live usage — column was misleading. Removed from header, row, and computed values. - **Issue 3 — Add VM**: New `list_proxmox_nodes` command (real `GET /nodes`), new `create_proxmox_vm` command with server-side validation (VMID range, numeric bounds, path-injection guard on node/storage/bridge, ISO comma-injection guard). `CreateVmDialog` component with node/storage auto-discovery. "Add VM" button in VMsPage. - `MigrationDialog` now uses `list_proxmox_nodes` instead of inferring targets from the local VM list. - Added missing `suspendProxmoxVm`, `resumeProxmoxVm`, `listProxmoxNodes`, `createProxmoxVm` client wrappers. ## Test plan - [ ] Connect to Proxmox cluster — verify Start/Stop/Reboot/Shutdown/Suspend/Resume all show toast feedback - [ ] Migrate dialog shows actual cluster nodes - [ ] Create VM via "Add VM" dialog — confirm appears in PVE web UI - [ ] Disk column absent from VM list - [ ] Delete VM shows browser confirm dialog - [ ] ISO with comma injection rejected with clear error - CI: 446 Rust tests + 405 frontend tests — all pass
sarman added 1 commit 2026-06-21 23:02:29 +00:00
fix(proxmox): fix VM actions, remove Disk column, add Create VM
Some checks failed
Test / frontend-tests (pull_request) Successful in 1m37s
Test / frontend-typecheck (pull_request) Successful in 1m49s
PR Review Automation / review (pull_request) Successful in 10m13s
Test / rust-fmt-check (pull_request) Failing after 12m20s
Test / rust-clippy (pull_request) Successful in 13m53s
Test / rust-tests (pull_request) Has been cancelled
a9a063f786
Issue 1 — VM actions silently doing nothing:
The root cause was a missing <Toaster> mount in App.tsx. All
toast.success/error calls were no-ops because the sonner Toaster
component was never rendered. Added it at the App root.

Also added dialog:allow-confirm capability (was missing, caused VM
delete confirmation to throw silently).

Issue 2 — Remove Disk column:
PVE cluster/resources returns only static disk allocation, not actual
usage, making the column misleading. Removed from VMList header, row,
and the diskPercent calculation.

Issue 3 — Add VM creation:
- New list_proxmox_nodes Tauri command (GET /nodes) for real node list
- New create_proxmox_vm Tauri command with server-side input validation:
  vmid range, numeric bounds, node/storage/bridge path-safety check,
  ISO volume-ID format check to prevent comma-property injection
- CreateVmDialog component with node/storage discovery on open
- "Add VM" button wired into VMsPage

MigrationDialog now fetches real cluster nodes via list_proxmox_nodes
instead of inferring them from the VMs already in the list.

Added suspendProxmoxVm, resumeProxmoxVm, listProxmoxNodes,
createProxmoxVm client wrappers to proxmoxClient.ts.

Tests: 446 Rust + 405 frontend, all pass. 19 new VMList tests (TDD),
7 new Rust tests for security validation logic.
sarman reviewed 2026-06-21 23:12:41 +00:00
sarman left a comment
Author
Owner

Automated PR Review:This PR was reviewed in 2 batches (0 batch(es) failed).

Batch 1 of 2

Summary

I've completed a thorough review of Batch 1 of the Proxmox dashboard fixes PR. The changes address three main issues: (1) VM actions showing no feedback due to missing Toaster, (2) misleading Disk column data, and (3) missing VM creation functionality. The implementation includes proper security validations for the new create_proxmox_vm command and fixes the migration dialog to use real cluster node data.

Findings

No BLOCKER or WARNING level issues found. The code compiles, security validations are in place, and the main functionality appears correct.

SUGGESTIONS:

  • [SUGGESTION] src/components/Proxmox/CreateVmDialog.tsx:207 - Frontend cores validation (max=128) doesn't match backend validation (max=512). The backend will accept cores up to 512, but the frontend form will prevent users from entering values above 128.

    • Evidence: min={1} max={128} on cores Input vs backend if !(1..=512).contains(&cores)
    • Fix: Update frontend max to 512 to match backend validation
  • [SUGGESTION] src/components/Proxmox/VMList.tsx:215 - Migration dialog opens immediately but node list fetches asynchronously. Users may see an empty target node dropdown briefly.

    • Evidence: handleMigrate sets setMigrationVM(vm) then awaits invoke('list_proxmox_nodes')
    • Fix: Add loading state to MigrationDialog to show spinner while nodes are being fetched
  • [SUGGESTION] src/components/Proxmox/CreateVmDialog.tsx:119 - No frontend validation for ISO format before submission; relies solely on backend validation.

    • Evidence: ISO input has placeholder hint but no onChange validation
    • Fix: Add client-side ISO format validation matching backend regex pattern

Verdict

APPROVE WITH COMMENTS

The PR addresses all stated issues correctly. The three suggestions above are UX improvements that could be addressed in a follow-up PR without blocking this merge. All security validations are properly implemented server-side, and the core functionality will work correctly as-is.


Batch 2 of 2

Summary

The provided Batch 2 changes focus on integrating new Proxmox VM management features (Create VM, Suspend/Resume actions) and updating the VM List component tests. The proxmoxClient.ts file correctly exposes new wrappers (suspendProxmoxVm, resumeProxmoxVm, listProxmoxNodes, createProxmoxVm) that match the Tauri commands listed in the Codebase Index. VMsPage.tsx properly integrates the CreateVmDialog and cluster selection logic. VMList.test.tsx provides comprehensive test coverage for VM actions, including the newly added Suspend/Resume flows and the removal of the Disk column. All invoked command names in the TypeScript wrappers match the registered Rust commands. No compilation errors or logic inconsistencies are evident in the provided files.

Findings

No findings.

Verdict: APPROVE



Overall Verdict: APPROVE WITH COMMENTS

Overall verdict reflects the most critical finding across all batches.

Automated PR Review:_This PR was reviewed in 2 batches (0 batch(es) failed)._ ## Batch 1 of 2 ## Summary I've completed a thorough review of Batch 1 of the Proxmox dashboard fixes PR. The changes address three main issues: (1) VM actions showing no feedback due to missing Toaster, (2) misleading Disk column data, and (3) missing VM creation functionality. The implementation includes proper security validations for the new `create_proxmox_vm` command and fixes the migration dialog to use real cluster node data. ## Findings **No BLOCKER or WARNING level issues found.** The code compiles, security validations are in place, and the main functionality appears correct. **SUGGESTIONS:** - [SUGGESTION] src/components/Proxmox/CreateVmDialog.tsx:207 - Frontend cores validation (max=128) doesn't match backend validation (max=512). The backend will accept cores up to 512, but the frontend form will prevent users from entering values above 128. - **Evidence:** `min={1} max={128}` on cores Input vs backend `if !(1..=512).contains(&cores)` - **Fix:** Update frontend max to 512 to match backend validation - [SUGGESTION] src/components/Proxmox/VMList.tsx:215 - Migration dialog opens immediately but node list fetches asynchronously. Users may see an empty target node dropdown briefly. - **Evidence:** `handleMigrate` sets `setMigrationVM(vm)` then awaits `invoke('list_proxmox_nodes')` - **Fix:** Add loading state to MigrationDialog to show spinner while nodes are being fetched - [SUGGESTION] src/components/Proxmox/CreateVmDialog.tsx:119 - No frontend validation for ISO format before submission; relies solely on backend validation. - **Evidence:** ISO input has placeholder hint but no `onChange` validation - **Fix:** Add client-side ISO format validation matching backend regex pattern ## Verdict **APPROVE WITH COMMENTS** The PR addresses all stated issues correctly. The three suggestions above are UX improvements that could be addressed in a follow-up PR without blocking this merge. All security validations are properly implemented server-side, and the core functionality will work correctly as-is. --- ## Batch 2 of 2 **Summary** The provided Batch 2 changes focus on integrating new Proxmox VM management features (Create VM, Suspend/Resume actions) and updating the VM List component tests. The `proxmoxClient.ts` file correctly exposes new wrappers (`suspendProxmoxVm`, `resumeProxmoxVm`, `listProxmoxNodes`, `createProxmoxVm`) that match the Tauri commands listed in the Codebase Index. `VMsPage.tsx` properly integrates the `CreateVmDialog` and cluster selection logic. `VMList.test.tsx` provides comprehensive test coverage for VM actions, including the newly added Suspend/Resume flows and the removal of the Disk column. All invoked command names in the TypeScript wrappers match the registered Rust commands. No compilation errors or logic inconsistencies are evident in the provided files. **Findings** *No findings.* **Verdict**: APPROVE --- --- **Overall Verdict**: APPROVE WITH COMMENTS _Overall verdict reflects the most critical finding across all batches._
sarman added 1 commit 2026-06-21 23:16:17 +00:00
fix(proxmox): address PR review suggestions
Some checks failed
PR Review Automation / review (pull_request) Has been cancelled
Test / frontend-tests (pull_request) Has been cancelled
Test / rust-tests (pull_request) Has been cancelled
Test / rust-clippy (pull_request) Has been cancelled
Test / frontend-typecheck (pull_request) Has been cancelled
Test / rust-fmt-check (pull_request) Has been cancelled
64fc808908
- Cores max aligned to backend limit (128→512)
- MigrationDialog shows loading state while node list fetches
- CreateVmDialog validates ISO format client-side on change, blocks
  submit and highlights field on invalid input
Author
Owner

All three suggestions resolved and pushed to the existing PR:

  • Cores max 128→512 — frontend attribute now matches the backend's 1..=512 validation range
  • Migration dialog loading state — nodesLoading state set around the list_proxmox_nodes invoke; MigrationDialog renders a pulsing "Loading nodes…" text in place of the dropdown while the fetch is in flight
  • ISO client-side validation — handleIsoChange validates against the storage:iso/filename.iso regex on every keystroke, shows inline red error text, highlights the input border red, and keeps the Create button disabled
    until the format is valid (or the field is empty)
All three suggestions resolved and pushed to the existing PR: - Cores max 128→512 — frontend attribute now matches the backend's 1..=512 validation range - Migration dialog loading state — nodesLoading state set around the list_proxmox_nodes invoke; MigrationDialog renders a pulsing "Loading nodes…" text in place of the dropdown while the fetch is in flight - ISO client-side validation — handleIsoChange validates against the storage:iso/filename.iso regex on every keystroke, shows inline red error text, highlights the input border red, and keeps the Create button disabled until the format is valid (or the field is empty)
sarman added 1 commit 2026-06-21 23:17:25 +00:00
fix(fmt): apply cargo fmt to proxmox command ISO validation
Some checks failed
Test / frontend-tests (pull_request) Successful in 1m51s
Test / frontend-typecheck (pull_request) Successful in 2m4s
PR Review Automation / review (pull_request) Successful in 5m32s
Test / rust-clippy (pull_request) Has been cancelled
Test / rust-fmt-check (pull_request) Has been cancelled
Test / rust-tests (pull_request) Has been cancelled
51311b9e83
sarman reviewed 2026-06-21 23:23:29 +00:00
sarman left a comment
Author
Owner

Automated PR Review:This PR was reviewed in 2 batches (0 batch(es) failed).

Batch 1 of 2

Summary

I've completed a focused review of Batch 1 changes. The core fixes are sound: Toaster mount resolves silent VM actions, capabilities enable delete confirmation, and security validations are properly implemented server-side. However, I identified one validation inconsistency and one UX issue that warrant attention.

Findings

  • [SUGGESTION] src/components/Proxmox/CreateVmDialog.tsx:119 - Frontend ISO regex validation differs from backend validation logic. Frontend requires .iso extension suffix while backend only requires storage:iso/ prefix format. This could cause false rejections of valid ISO paths like local:iso/ubuntu-24.04.

    • Evidence: Frontend ISO_RE = /^[a-zA-Z0-9_-]+:iso\/.+\.iso$/ vs backend validation that checks path.starts_with("iso/") and !path.contains(",") without requiring .iso extension
    • Fix: Align frontend regex with backend: /^[a-zA-Z0-9_-]+:iso\/[^,]+$/
  • [SUGGESTION] src/components/Proxmox/VMList.tsx:215 - Migration dialog displays empty target node dropdown during async fetch. Users may see "No other nodes available" message before nodes load.

    • Evidence: setMigrationVM(vm) called before await invoke('list_proxmox_nodes') completes, and MigrationDialog receives availableNodeNames without loading indicator
    • Fix: Pass nodesLoading prop to MigrationDialog and show loading spinner in dropdown

Verdict: APPROVE WITH COMMENTS

Both findings are UX improvements that don't block the merge. The security validations are correctly implemented server-side, and the core functionality will work as intended. These can be addressed in a follow-up PR.


Batch 2 of 2

Summary

I've completed a thorough review of Batch 2 changes. The code correctly exposes new Proxmox client wrappers (suspendProxmoxVm, resumeProxmoxVm, listProxmoxNodes, createProxmoxVm) that match the registered Tauri commands in the Codebase Index. The VMsPage.tsx properly integrates the Create VM dialog with cluster selection. The test file provides comprehensive coverage for VM action menus across different VM states (stopped, running, paused).

Findings

No findings.

Verdict: APPROVE


Review Details

Command Registration Verification

All invoke calls in the changed files match registered Tauri commands from the Codebase Index:

  • suspend_proxmox_vm
  • resume_proxmox_vm
  • list_proxmox_nodes
  • create_proxmox_vm

Type Safety

The CreateVmParams interface is properly defined with all required fields matching the backend command signature.

Test Coverage

The test file correctly:

  • Verifies Disk column is NOT rendered (Issue 2 fix)
  • Tests suspend/resume actions for appropriate VM states
  • Validates action menu behavior for stopped/running/paused VMs
  • Confirms migrate action uses list_proxmox_nodes

No Issues Found

  • No compilation errors
  • No type mismatches
  • No security vulnerabilities in the changed code
  • No logic errors in the new functionality
  • All findings from Batch 1 were already addressed or acknowledged as follow-up items


Overall Verdict: APPROVE WITH COMMENTS

Overall verdict reflects the most critical finding across all batches.

Automated PR Review:_This PR was reviewed in 2 batches (0 batch(es) failed)._ ## Batch 1 of 2 **Summary** I've completed a focused review of Batch 1 changes. The core fixes are sound: Toaster mount resolves silent VM actions, capabilities enable delete confirmation, and security validations are properly implemented server-side. However, I identified one validation inconsistency and one UX issue that warrant attention. **Findings** - [SUGGESTION] src/components/Proxmox/CreateVmDialog.tsx:119 - Frontend ISO regex validation differs from backend validation logic. Frontend requires `.iso` extension suffix while backend only requires `storage:iso/` prefix format. This could cause false rejections of valid ISO paths like `local:iso/ubuntu-24.04`. - **Evidence:** Frontend `ISO_RE = /^[a-zA-Z0-9_-]+:iso\/.+\.iso$/` vs backend validation that checks `path.starts_with("iso/")` and `!path.contains(",")` without requiring `.iso` extension - **Fix:** Align frontend regex with backend: `/^[a-zA-Z0-9_-]+:iso\/[^,]+$/` - [SUGGESTION] src/components/Proxmox/VMList.tsx:215 - Migration dialog displays empty target node dropdown during async fetch. Users may see "No other nodes available" message before nodes load. - **Evidence:** `setMigrationVM(vm)` called before `await invoke('list_proxmox_nodes')` completes, and `MigrationDialog` receives `availableNodeNames` without loading indicator - **Fix:** Pass `nodesLoading` prop to MigrationDialog and show loading spinner in dropdown **Verdict**: APPROVE WITH COMMENTS Both findings are UX improvements that don't block the merge. The security validations are correctly implemented server-side, and the core functionality will work as intended. These can be addressed in a follow-up PR. --- ## Batch 2 of 2 **Summary** I've completed a thorough review of Batch 2 changes. The code correctly exposes new Proxmox client wrappers (`suspendProxmoxVm`, `resumeProxmoxVm`, `listProxmoxNodes`, `createProxmoxVm`) that match the registered Tauri commands in the Codebase Index. The `VMsPage.tsx` properly integrates the Create VM dialog with cluster selection. The test file provides comprehensive coverage for VM action menus across different VM states (stopped, running, paused). **Findings** No findings. **Verdict**: APPROVE --- ## Review Details ### Command Registration Verification All invoke calls in the changed files match registered Tauri commands from the Codebase Index: - `suspend_proxmox_vm` ✅ - `resume_proxmox_vm` ✅ - `list_proxmox_nodes` ✅ - `create_proxmox_vm` ✅ ### Type Safety The `CreateVmParams` interface is properly defined with all required fields matching the backend command signature. ### Test Coverage The test file correctly: - Verifies Disk column is NOT rendered (Issue 2 fix) - Tests suspend/resume actions for appropriate VM states - Validates action menu behavior for stopped/running/paused VMs - Confirms migrate action uses `list_proxmox_nodes` ### No Issues Found - No compilation errors - No type mismatches - No security vulnerabilities in the changed code - No logic errors in the new functionality - All findings from Batch 1 were already addressed or acknowledged as follow-up items --- --- **Overall Verdict**: APPROVE WITH COMMENTS _Overall verdict reflects the most critical finding across all batches._
sarman added 1 commit 2026-06-21 23:28:53 +00:00
fix(proxmox): align ISO frontend validation with backend
All checks were successful
Test / frontend-tests (pull_request) Successful in 1m44s
Test / frontend-typecheck (pull_request) Successful in 1m53s
PR Review Automation / review (pull_request) Successful in 6m9s
Test / rust-fmt-check (pull_request) Successful in 12m1s
Test / rust-clippy (pull_request) Successful in 13m33s
Test / rust-tests (pull_request) Successful in 15m5s
e6dddc1b27
Frontend regex required a .iso suffix that the backend does not enforce.
Changed from /^[a-zA-Z0-9_-]+:iso\/.+\.iso$/ to
/^[a-zA-Z0-9_-]+:iso\/[^,]+$/ to match the backend rule: must start
with storage:iso/ and contain no commas. Updated hint and error text
accordingly.
Author
Owner

The ISO regex is now /^[a-zA-Z0-9_-]+:iso/[^,]+$/ — matching the backend's two rules exactly (must begin with storage:iso/, no commas). The .iso extension is no longer required client-side. The nodesLoading concern was already addressed in the previous round and the reviewer was looking at an older batch.

The ISO regex is now /^[a-zA-Z0-9_-]+:iso\/[^,]+$/ — matching the backend's two rules exactly (must begin with storage:iso/, no commas). The .iso extension is no longer required client-side. The nodesLoading concern was already addressed in the previous round and the reviewer was looking at an older batch.
sarman reviewed 2026-06-21 23:35:02 +00:00
sarman left a comment
Author
Owner

Automated PR Review:This PR was reviewed in 2 batches (0 batch(es) failed).

Batch 1 of 2

Summary

I've completed a thorough review of Batch 1 changes. The PR successfully addresses three Proxmox dashboard issues: (1) VM actions now show toast feedback after mounting the Toaster component, (2) misleading Disk column removed, and (3) new VM creation functionality with proper server-side security validations. All Tauri commands are correctly registered, and security validations for path injection, ISO injection, and numeric bounds are properly implemented server-side.

Findings

No findings.

Verdict: APPROVE


Validation Notes

The three SUGGESTION-level items identified in prior review rounds (frontend cores validation mismatch, migration dialog loading state, ISO regex alignment) are acknowledged UX improvements that do not block the merge. These were already documented in the previous "APPROVE WITH COMMENTS" verdict and do not require re-flagging.

Key validations confirmed:

  • All invoke calls (list_proxmox_nodes, create_proxmox_vm, suspend_proxmox_vm, resume_proxmox_vm) match registered Tauri commands in Codebase Index
  • Security validations (path injection, ISO comma injection, numeric bounds) are server-side only
  • dialog:allow-confirm capability added for delete confirmation dialogs
  • Toaster component mounted in App.tsx to enable toast notifications
  • No compilation or type errors in changed files

Batch 2 of 2

Summary

Batch 2 changes correctly expose new Proxmox client wrappers (suspendProxmoxVm, resumeProxmoxVm, listProxmoxNodes, createProxmoxVm) that match registered Tauri commands. The VMsPage.tsx properly integrates the Create VM dialog with cluster selection, and the test file provides comprehensive coverage for VM actions across stopped/running/paused states. All invoke calls match the Codebase Index command registration.

Findings

No findings.

Verdict: APPROVE


Analysis Details

Command Registration Verification

All TypeScript invoke wrappers match registered Tauri commands from the Codebase Index:

Function Command Status
suspendProxmoxVm suspend_proxmox_vm
resumeProxmoxVm resume_proxmox_vm
listProxmoxNodes list_proxmox_nodes
createProxmoxVm create_proxmox_vm

Type Safety

  • CreateVmParams interface properly defines all required fields matching backend command signature
  • Return types are consistent with existing proxmoxClient patterns

Test Coverage

Tests verify:

  • Disk column is NOT rendered (Issue 2 fix confirmed)
  • Suspend/Resume actions invoke correct commands
  • Action menu behavior for stopped/running/paused VM states
  • Migrate action uses list_proxmox_nodes
  • Start/Stop/Reboot/Shutdown commands verified

No High-Signal Issues

  • No compilation or type errors
  • No logic errors in new functionality
  • No security vulnerabilities in changed code
  • All Batch 1 suggestions are follow-up items that don't block merge


Overall Verdict: APPROVE WITH COMMENTS

Overall verdict reflects the most critical finding across all batches.

Automated PR Review:_This PR was reviewed in 2 batches (0 batch(es) failed)._ ## Batch 1 of 2 **Summary** I've completed a thorough review of Batch 1 changes. The PR successfully addresses three Proxmox dashboard issues: (1) VM actions now show toast feedback after mounting the Toaster component, (2) misleading Disk column removed, and (3) new VM creation functionality with proper server-side security validations. All Tauri commands are correctly registered, and security validations for path injection, ISO injection, and numeric bounds are properly implemented server-side. **Findings** No findings. **Verdict**: APPROVE --- ## Validation Notes The three SUGGESTION-level items identified in prior review rounds (frontend cores validation mismatch, migration dialog loading state, ISO regex alignment) are acknowledged UX improvements that do not block the merge. These were already documented in the previous "APPROVE WITH COMMENTS" verdict and do not require re-flagging. **Key validations confirmed:** - ✅ All invoke calls (`list_proxmox_nodes`, `create_proxmox_vm`, `suspend_proxmox_vm`, `resume_proxmox_vm`) match registered Tauri commands in Codebase Index - ✅ Security validations (path injection, ISO comma injection, numeric bounds) are server-side only - ✅ `dialog:allow-confirm` capability added for delete confirmation dialogs - ✅ Toaster component mounted in App.tsx to enable toast notifications - ✅ No compilation or type errors in changed files --- ## Batch 2 of 2 **Summary** Batch 2 changes correctly expose new Proxmox client wrappers (`suspendProxmoxVm`, `resumeProxmoxVm`, `listProxmoxNodes`, `createProxmoxVm`) that match registered Tauri commands. The `VMsPage.tsx` properly integrates the Create VM dialog with cluster selection, and the test file provides comprehensive coverage for VM actions across stopped/running/paused states. All invoke calls match the Codebase Index command registration. **Findings** No findings. **Verdict**: APPROVE --- ## Analysis Details ### Command Registration Verification All TypeScript invoke wrappers match registered Tauri commands from the Codebase Index: | Function | Command | Status | |----------|---------|--------| | `suspendProxmoxVm` | `suspend_proxmox_vm` | ✅ | | `resumeProxmoxVm` | `resume_proxmox_vm` | ✅ | | `listProxmoxNodes` | `list_proxmox_nodes` | ✅ | | `createProxmoxVm` | `create_proxmox_vm` | ✅ | ### Type Safety - `CreateVmParams` interface properly defines all required fields matching backend command signature - Return types are consistent with existing proxmoxClient patterns ### Test Coverage Tests verify: - ✅ Disk column is NOT rendered (Issue 2 fix confirmed) - ✅ Suspend/Resume actions invoke correct commands - ✅ Action menu behavior for stopped/running/paused VM states - ✅ Migrate action uses `list_proxmox_nodes` - ✅ Start/Stop/Reboot/Shutdown commands verified ### No High-Signal Issues - No compilation or type errors - No logic errors in new functionality - No security vulnerabilities in changed code - All Batch 1 suggestions are follow-up items that don't block merge --- --- **Overall Verdict**: APPROVE WITH COMMENTS _Overall verdict reflects the most critical finding across all batches._
sarman merged commit 37c497d9b6 into beta 2026-06-21 23:45:17 +00:00
sarman deleted branch fix/proxmox-vm-actions-v3 2026-06-21 23:45:18 +00:00
Sign in to join this conversation.
No reviewers
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: sarman/tftsr-devops_investigation#130
No description provided.