feat(proxmox): implement full feature parity with snapshot and network CRUD #131

Merged
sarman merged 4 commits from fix/proxmox-full-parity into beta 2026-06-22 02:52:06 +00:00
Owner
  • Fix compilation errors in create_vm and clone_vm functions
  • Add snapshot operations (list, create, delete, rollback)
  • Add network interface CRUD operations
  • Update VMList to use actual snapshot functions
  • Add TypeScript bindings for all new commands
  • All 448 Rust tests and 405 frontend tests passing

Resolves all 6 Proxmox issues for full DCM parity

- Fix compilation errors in create_vm and clone_vm functions - Add snapshot operations (list, create, delete, rollback) - Add network interface CRUD operations - Update VMList to use actual snapshot functions - Add TypeScript bindings for all new commands - All 448 Rust tests and 405 frontend tests passing Resolves all 6 Proxmox issues for full DCM parity
sarman added 1 commit 2026-06-22 01:05:45 +00:00
feat(proxmox): implement full feature parity with snapshot and network CRUD
All checks were successful
Test / frontend-tests (pull_request) Successful in 1m43s
Test / frontend-typecheck (pull_request) Successful in 1m54s
PR Review Automation / review (pull_request) Successful in 6m6s
Test / rust-fmt-check (pull_request) Successful in 13m13s
Test / rust-clippy (pull_request) Successful in 14m25s
Test / rust-tests (pull_request) Successful in 16m28s
9808417b44
- Fix compilation errors in create_vm and clone_vm functions
- Add snapshot operations (list, create, delete, rollback)
- Add network interface CRUD operations
- Update VMList to use actual snapshot functions
- Add TypeScript bindings for all new commands
- All 448 Rust tests and 405 frontend tests passing

Resolves all 6 Proxmox issues for full DCM parity
sarman reviewed 2026-06-22 01:11:50 +00:00
sarman left a comment
Author
Owner

Automated PR Review:This PR was reviewed in 3 batches (1 batch(es) failed).

Batch 1 of 3

Review unavailable — LLM returned HTTP 400.


Batch 2 of 3

Code Review Summary

This PR implements snapshot and network interface CRUD operations for Proxmox VMs, completing feature parity goals. The implementation appears functionally correct with proper Tauri command registration, TypeScript bindings, and frontend integration.

Findings

  • [WARNING] src-tauri/src/commands/proxmox.rs:2379 - Duplicate NetworkInterfaceConfig struct definition

    • Evidence: The NetworkInterfaceConfig struct and serde_bool_as_int helper module are defined in both src-tauri/src/commands/proxmox.rs (lines 2379-2414) AND src-tauri/src/proxmox/network.rs (lines 37-66)
    • Fix: Remove the duplicate struct definition from proxmox.rs and import from proxmox::network::NetworkInterfaceConfig instead
  • [SUGGESTION] src/components/Proxmox/VMList.tsx:215 - Missing snapshot display in list operation

    • Evidence: The list case logs snapshots to console but only shows toast with count: toast.success(\Found ${snapshots.length} snapshot(s) for ${vm.name}`)` without displaying the actual snapshot list to the user
    • Fix: Consider showing snapshot names in a toast, modal, or console output that users can actually see
  • [SUGGESTION] src/components/Proxmox/VMList.tsx:229,244 - Blocking UI dialogs

    • Evidence: Uses window.prompt() and window.confirm() which block the UI thread and don't match the app's design patterns
    • Fix: Consider using React-based dialog components consistent with the rest of the application (e.g., similar to migration dialog)

Verdict: APPROVE WITH COMMENTS

The implementation is functionally complete and passes all stated tests. The duplicate struct definition is a maintainability concern that should be addressed. The UI suggestions are minor enhancements that could be handled in a follow-up PR.


Batch 3 of 3

Summary

This batch shows the TypeScript client additions for Proxmox network interface and snapshot operations. The code follows the established Tauri command pattern and appears structurally sound. However, there are a few type safety and error handling concerns worth addressing.

Findings

  • [SUGGESTION] src/lib/proxmoxClient.ts:1086 - listProxmoxSnapshots returns Promise<any[]> instead of a typed interface
    Evidence: invoke<any[]>("list_proxmox_snapshots", { clusterId, nodeId, vmid });
    Fix: Create a ProxmoxSnapshot interface with fields like name, vmid, snapshot, ctime, snaptype and use Promise<ProxmoxSnapshot[]>

  • [SUGGESTION] src/lib/proxmoxClient.ts:1098, 1112, 1126 - Snapshot and network functions return Promise<void> without error propagation
    Evidence: invoke<void>("create_proxmox_snapshot", { clusterId, nodeId, vmid, snapshotName });
    Fix: Consider returning operation status or task ID if the backend provides it, to enable frontend polling for completion status

  • [SUGGESTION] src/lib/proxmoxClient.ts:1005 - NetworkInterfaceConfig has inconsistent optionality with NetworkInterface
    Evidence: NetworkInterface has required active: boolean and autostart: boolean, while NetworkInterfaceConfig has them as optional
    Fix: This is actually correct for create/update semantics, but consider adding a comment explaining the distinction between read and write models

Verdict: APPROVE WITH COMMENTS

The changes are functionally correct and follow the project's established patterns. The findings above are suggestions for improved type safety and error handling that could be addressed in a follow-up PR without blocking this merge.



Overall Verdict: APPROVE WITH COMMENTS

Overall verdict reflects the most critical finding across all batches.

Automated PR Review:_This PR was reviewed in 3 batches (1 batch(es) failed)._ ## Batch 1 of 3 Review unavailable — LLM returned HTTP 400. --- ## Batch 2 of 3 ## Code Review Summary This PR implements snapshot and network interface CRUD operations for Proxmox VMs, completing feature parity goals. The implementation appears functionally correct with proper Tauri command registration, TypeScript bindings, and frontend integration. ## Findings - [WARNING] src-tauri/src/commands/proxmox.rs:2379 - **Duplicate NetworkInterfaceConfig struct definition** - Evidence: The `NetworkInterfaceConfig` struct and `serde_bool_as_int` helper module are defined in both `src-tauri/src/commands/proxmox.rs` (lines 2379-2414) AND `src-tauri/src/proxmox/network.rs` (lines 37-66) - Fix: Remove the duplicate struct definition from `proxmox.rs` and import from `proxmox::network::NetworkInterfaceConfig` instead - [SUGGESTION] src/components/Proxmox/VMList.tsx:215 - **Missing snapshot display in list operation** - Evidence: The `list` case logs snapshots to console but only shows toast with count: `toast.success(\`Found ${snapshots.length} snapshot(s) for ${vm.name}\`)` without displaying the actual snapshot list to the user - Fix: Consider showing snapshot names in a toast, modal, or console output that users can actually see - [SUGGESTION] src/components/Proxmox/VMList.tsx:229,244 - **Blocking UI dialogs** - Evidence: Uses `window.prompt()` and `window.confirm()` which block the UI thread and don't match the app's design patterns - Fix: Consider using React-based dialog components consistent with the rest of the application (e.g., similar to migration dialog) ## Verdict: APPROVE WITH COMMENTS The implementation is functionally complete and passes all stated tests. The duplicate struct definition is a maintainability concern that should be addressed. The UI suggestions are minor enhancements that could be handled in a follow-up PR. --- ## Batch 3 of 3 **Summary** This batch shows the TypeScript client additions for Proxmox network interface and snapshot operations. The code follows the established Tauri command pattern and appears structurally sound. However, there are a few type safety and error handling concerns worth addressing. **Findings** - [SUGGESTION] src/lib/proxmoxClient.ts:1086 - `listProxmoxSnapshots` returns `Promise<any[]>` instead of a typed interface Evidence: `invoke<any[]>("list_proxmox_snapshots", { clusterId, nodeId, vmid });` Fix: Create a `ProxmoxSnapshot` interface with fields like `name`, `vmid`, `snapshot`, `ctime`, `snaptype` and use `Promise<ProxmoxSnapshot[]>` - [SUGGESTION] src/lib/proxmoxClient.ts:1098, 1112, 1126 - Snapshot and network functions return `Promise<void>` without error propagation Evidence: `invoke<void>("create_proxmox_snapshot", { clusterId, nodeId, vmid, snapshotName });` Fix: Consider returning operation status or task ID if the backend provides it, to enable frontend polling for completion status - [SUGGESTION] src/lib/proxmoxClient.ts:1005 - `NetworkInterfaceConfig` has inconsistent optionality with `NetworkInterface` Evidence: `NetworkInterface` has required `active: boolean` and `autostart: boolean`, while `NetworkInterfaceConfig` has them as optional Fix: This is actually correct for create/update semantics, but consider adding a comment explaining the distinction between read and write models **Verdict**: APPROVE WITH COMMENTS The changes are functionally correct and follow the project's established patterns. The findings above are suggestions for improved type safety and error handling that could be addressed in a follow-up PR without blocking this merge. --- --- **Overall Verdict**: APPROVE WITH COMMENTS _Overall verdict reflects the most critical finding across all batches._
sarman added 1 commit 2026-06-22 01:54:45 +00:00
feat: integrate SnapshotDialog and remove duplicate NetworkInterfaceConfig
All checks were successful
Test / frontend-tests (pull_request) Successful in 1m38s
Test / frontend-typecheck (pull_request) Successful in 1m50s
PR Review Automation / review (pull_request) Successful in 5m41s
Test / rust-fmt-check (pull_request) Successful in 12m11s
Test / rust-clippy (pull_request) Successful in 13m35s
Test / rust-tests (pull_request) Successful in 15m39s
e6ec3a46e2
- Add React-based SnapshotDialog for create/list/rollback/delete operations
- Replace blocking window.prompt/confirm with proper React components
- Remove duplicate NetworkInterfaceConfig struct from proxmox.rs
- Import NetworkInterfaceConfig from crate::proxmox::network instead
- All 448 Rust tests passing, all 405 frontend tests passing
- Zero clippy warnings, zero TypeScript errors, zero ESLint issues
sarman reviewed 2026-06-22 02:00:25 +00:00
sarman left a comment
Author
Owner

Automated PR Review:This PR was reviewed in 3 batches (1 batch(es) failed).

Batch 1 of 3

Review unavailable — LLM returned HTTP 400.


Batch 2 of 3

Summary

This PR batch implements Proxmox snapshot and network interface CRUD operations. The code follows established patterns with proper Tauri command registration and TypeScript bindings. However, there is one critical compilation issue that must be resolved before merge.

Findings

  • [BLOCKER] src-tauri/src/commands/proxmox.rs:2379-2397 - Duplicate NetworkInterfaceConfig struct definition causing compilation failure
    Evidence: The file imports use crate::proxmox::network::NetworkInterfaceConfig; at line 2379, then immediately redefines the same struct at lines 2380-2397. This creates a naming conflict in the same scope.
    Fix: Remove the duplicate struct definition (lines 2379-2414) from proxmox.rs and keep only the import statement. The NetworkInterfaceConfig struct already exists in src-tauri/src/proxmox/network.rs (lines 37-66) with proper serde_bool_as_int serialization.

  • [SUGGESTION] src-tauri/src/proxmox/network.rs:123 - NetworkInterfaceConfig serialization may fail on missing optional fields
    Evidence: The serde_bool_as_int module uses i8::deserialize(deserializer)? which will fail if the field is missing from the JSON. The struct has #[serde(default)] but the custom serializer/deserializer may not respect it properly.
    Fix: Consider using serde's #[serde(default, with = "serde_bool_as_int")] pattern or ensure the deserializer handles missing values gracefully.

Verdict: REQUEST CHANGES

The duplicate struct definition is a compilation-blocking issue that must be fixed before this PR can be merged. The serialization concern is minor and can be addressed in a follow-up if needed.


Batch 3 of 3

Summary

This batch shows the TypeScript client layer for Proxmox snapshot and network interface operations. The implementation follows established Tauri command patterns and integrates properly with the VMList component. The code is functionally correct with proper TypeScript interfaces and error handling in the UI layer.

Findings

  • [SUGGESTION] src/lib/proxmoxClient.ts:1086 - listProxmoxSnapshots returns Promise<any[]> instead of a typed interface
    Evidence: invoke<any[]>("list_proxmox_snapshots", { clusterId, nodeId, vmid });
    Fix: Replace any[] with ProxmoxSnapshot[] using the interface defined in VMList.tsx

  • [SUGGESTION] src/lib/proxmoxClient.ts:1098, 1112, 1126 - Snapshot and network functions return Promise<void> without error propagation
    Evidence: invoke<void>("create_proxmox_snapshot", { clusterId, nodeId, vmid, snapshotName });
    Fix: Consider returning operation status or task ID if the backend provides it, to enable frontend polling for completion status

Verdict: APPROVE WITH COMMENTS

The changes are functionally correct and follow the project's established patterns. The findings above are suggestions for improved type safety and error handling that could be addressed in a follow-up PR without blocking this merge.



Overall Verdict: REQUEST CHANGES

Overall verdict reflects the most critical finding across all batches.

Automated PR Review:_This PR was reviewed in 3 batches (1 batch(es) failed)._ ## Batch 1 of 3 Review unavailable — LLM returned HTTP 400. --- ## Batch 2 of 3 ## Summary This PR batch implements Proxmox snapshot and network interface CRUD operations. The code follows established patterns with proper Tauri command registration and TypeScript bindings. However, there is one critical compilation issue that must be resolved before merge. ## Findings - [BLOCKER] src-tauri/src/commands/proxmox.rs:2379-2397 - **Duplicate NetworkInterfaceConfig struct definition causing compilation failure** Evidence: The file imports `use crate::proxmox::network::NetworkInterfaceConfig;` at line 2379, then immediately redefines the same struct at lines 2380-2397. This creates a naming conflict in the same scope. Fix: Remove the duplicate struct definition (lines 2379-2414) from `proxmox.rs` and keep only the import statement. The `NetworkInterfaceConfig` struct already exists in `src-tauri/src/proxmox/network.rs` (lines 37-66) with proper serde_bool_as_int serialization. - [SUGGESTION] src-tauri/src/proxmox/network.rs:123 - **NetworkInterfaceConfig serialization may fail on missing optional fields** Evidence: The `serde_bool_as_int` module uses `i8::deserialize(deserializer)?` which will fail if the field is missing from the JSON. The struct has `#[serde(default)]` but the custom serializer/deserializer may not respect it properly. Fix: Consider using serde's `#[serde(default, with = "serde_bool_as_int")]` pattern or ensure the deserializer handles missing values gracefully. ## Verdict: REQUEST CHANGES The duplicate struct definition is a compilation-blocking issue that must be fixed before this PR can be merged. The serialization concern is minor and can be addressed in a follow-up if needed. --- ## Batch 3 of 3 **Summary** This batch shows the TypeScript client layer for Proxmox snapshot and network interface operations. The implementation follows established Tauri command patterns and integrates properly with the VMList component. The code is functionally correct with proper TypeScript interfaces and error handling in the UI layer. **Findings** - [SUGGESTION] src/lib/proxmoxClient.ts:1086 - `listProxmoxSnapshots` returns `Promise<any[]>` instead of a typed interface Evidence: `invoke<any[]>("list_proxmox_snapshots", { clusterId, nodeId, vmid });` Fix: Replace `any[]` with `ProxmoxSnapshot[]` using the interface defined in VMList.tsx - [SUGGESTION] src/lib/proxmoxClient.ts:1098, 1112, 1126 - Snapshot and network functions return `Promise<void>` without error propagation Evidence: `invoke<void>("create_proxmox_snapshot", { clusterId, nodeId, vmid, snapshotName });` Fix: Consider returning operation status or task ID if the backend provides it, to enable frontend polling for completion status **Verdict**: APPROVE WITH COMMENTS The changes are functionally correct and follow the project's established patterns. The findings above are suggestions for improved type safety and error handling that could be addressed in a follow-up PR without blocking this merge. --- --- **Overall Verdict**: REQUEST CHANGES _Overall verdict reflects the most critical finding across all batches._
sarman added 1 commit 2026-06-22 02:42:05 +00:00
feat(proxmox): ISO upload, full CRUD validation, and security hardening
Some checks failed
Test / frontend-tests (pull_request) Successful in 1m40s
Test / frontend-typecheck (pull_request) Successful in 1m49s
PR Review Automation / review (pull_request) Successful in 6m0s
Test / rust-clippy (pull_request) Has been cancelled
Test / rust-tests (pull_request) Has been cancelled
Test / rust-fmt-check (pull_request) Has been cancelled
76d923a570
- Add ISO upload via OS file picker: multipart POST to nodes/{node}/storage/{storage}/upload,
  returns task UPID; Upload ISO button in CreateVmDialog triggers dialog filtered to .iso files
- Add cluster/datacenter selector to CreateVmDialog (shown when >1 cluster configured)
- Replace ISO text input with dropdown populated from listIsoImages; falls back to text input
  when storage has no ISOs
- Rewrite NetworkPage with full CRUD: add/edit/delete interfaces via dialog, Checkbox toggles
  for active/autostart, per-row Edit/Delete buttons
- Fix serde_bool_as_int deserializer to accept both bool and integer using visitor pattern
- Fix Content-Type conflict: remove pre-set header from build_headers(), let .json()/.form()
  manage it (root cause of 400 Bad Request on VM start/migrate)
- Fix migration: remove invalid targetcluster/targetstorage params, switch to JSON body
- Security: wire validate_pve_identifier() into all 9 path-interpolating commands
  (list/create/update/delete network interfaces, all 4 snapshot commands, list/upload ISO)
  — previously only create_proxmox_vm was guarded
- Add post_multipart() method to ProxmoxClient for multipart form-data requests
- Add uploadIsoImage TypeScript wrapper and update proxmoxClient exports
- Update IPC-Commands wiki with all new and previously undocumented commands
sarman reviewed 2026-06-22 02:48:03 +00:00
sarman left a comment
Author
Owner

Automated PR Review:This PR was reviewed in 3 batches (1 batch(es) failed).

Batch 1 of 3

Review unavailable — LLM returned HTTP 400.


Batch 2 of 3

Summary

This PR implements Proxmox snapshot and network interface CRUD operations to achieve feature parity with Proxmox Datacenter Manager. The code follows established Tauri command patterns with proper validation. However, there is a critical compilation-blocking issue that must be resolved before merge.

Findings

  • [BLOCKER] src-tauri/src/commands/proxmox.rs:2379-2397 - Duplicate NetworkInterfaceConfig struct definition causing compilation failure
    Evidence: The file imports use crate::proxmox::network::NetworkInterfaceConfig; at line 2379, then immediately redefines the same struct at lines 2380-2397:

    use crate::proxmox::network::NetworkInterfaceConfig;
    ...
    pub struct NetworkInterfaceConfig {
        pub iface: String,
        ...
    }
    

    Fix: Remove the duplicate struct definition (lines 2380-2397) and the associated serde_bool_as_int module from proxmox.rs. Keep only the import statement. The NetworkInterfaceConfig struct already exists in src-tauri/src/proxmox/network.rs with proper serialization.

  • [SUGGESTION] src/components/Proxmox/VMList.tsx:215 - Missing snapshot display in list operation
    Evidence: The list case logs snapshots to console but only shows toast with count: toast.success(\Found ${snapshots.length} snapshot(s) for ${vm.name}`)` without displaying the actual snapshot list to the user
    Fix: Consider showing snapshot names in a toast, modal, or console output that users can actually see

  • [SUGGESTION] src/components/Proxmox/VMList.tsx:229,244 - Blocking UI dialogs
    Evidence: Uses window.prompt() and window.confirm() which block the UI thread and don't match the app's design patterns
    Fix: Consider using React-based dialog components consistent with the rest of the application (e.g., similar to migration dialog)

Verdict: REQUEST CHANGES

The duplicate struct definition is a compilation-blocking issue that must be fixed before this PR can be merged. The UI suggestions are minor enhancements that could be handled in a follow-up PR.


Batch 3 of 3

Summary

This batch implements the TypeScript client layer for Proxmox snapshot and network interface operations, along with the corresponding React UI components. The code follows established Tauri command patterns with proper type definitions and error handling in the UI layer.

Findings

No findings.

The code in this batch is functionally correct:

  • src-tauri/src/proxmox/vm.rs contains complete snapshot CRUD operations (create, delete, rollback, list) with proper error handling
  • src/lib/proxmoxClient.ts has the ProxmoxSnapshot interface properly defined (resolving the Batch 3 review suggestion about any[] return types)
  • src/components/Proxmox/VMList.tsx correctly implements snapshot dialogs with user confirmations for destructive actions
  • src/pages/Proxmox/NetworkPage.tsx properly uses the NetworkInterfaceConfig type with appropriate field optionality

The duplicate NetworkInterfaceConfig struct issue identified in Batch 2 is in src-tauri/src/commands/proxmox.rs, which is not included in this batch. This batch's TypeScript and frontend code is clean.

Verdict: APPROVE

The changes are functionally complete and follow established project patterns. No blocking issues exist in this batch.



Overall Verdict: REQUEST CHANGES

Overall verdict reflects the most critical finding across all batches.

Automated PR Review:_This PR was reviewed in 3 batches (1 batch(es) failed)._ ## Batch 1 of 3 Review unavailable — LLM returned HTTP 400. --- ## Batch 2 of 3 **Summary** This PR implements Proxmox snapshot and network interface CRUD operations to achieve feature parity with Proxmox Datacenter Manager. The code follows established Tauri command patterns with proper validation. However, there is a critical compilation-blocking issue that must be resolved before merge. **Findings** - [BLOCKER] src-tauri/src/commands/proxmox.rs:2379-2397 - **Duplicate NetworkInterfaceConfig struct definition causing compilation failure** Evidence: The file imports `use crate::proxmox::network::NetworkInterfaceConfig;` at line 2379, then immediately redefines the same struct at lines 2380-2397: ```rust use crate::proxmox::network::NetworkInterfaceConfig; ... pub struct NetworkInterfaceConfig { pub iface: String, ... } ``` Fix: Remove the duplicate struct definition (lines 2380-2397) and the associated `serde_bool_as_int` module from `proxmox.rs`. Keep only the import statement. The `NetworkInterfaceConfig` struct already exists in `src-tauri/src/proxmox/network.rs` with proper serialization. - [SUGGESTION] src/components/Proxmox/VMList.tsx:215 - **Missing snapshot display in list operation** Evidence: The `list` case logs snapshots to console but only shows toast with count: `toast.success(\`Found ${snapshots.length} snapshot(s) for ${vm.name}\`)` without displaying the actual snapshot list to the user Fix: Consider showing snapshot names in a toast, modal, or console output that users can actually see - [SUGGESTION] src/components/Proxmox/VMList.tsx:229,244 - **Blocking UI dialogs** Evidence: Uses `window.prompt()` and `window.confirm()` which block the UI thread and don't match the app's design patterns Fix: Consider using React-based dialog components consistent with the rest of the application (e.g., similar to migration dialog) **Verdict**: REQUEST CHANGES The duplicate struct definition is a compilation-blocking issue that must be fixed before this PR can be merged. The UI suggestions are minor enhancements that could be handled in a follow-up PR. --- ## Batch 3 of 3 ## Summary This batch implements the TypeScript client layer for Proxmox snapshot and network interface operations, along with the corresponding React UI components. The code follows established Tauri command patterns with proper type definitions and error handling in the UI layer. ## Findings **No findings.** The code in this batch is functionally correct: - `src-tauri/src/proxmox/vm.rs` contains complete snapshot CRUD operations (create, delete, rollback, list) with proper error handling - `src/lib/proxmoxClient.ts` has the `ProxmoxSnapshot` interface properly defined (resolving the Batch 3 review suggestion about `any[]` return types) - `src/components/Proxmox/VMList.tsx` correctly implements snapshot dialogs with user confirmations for destructive actions - `src/pages/Proxmox/NetworkPage.tsx` properly uses the `NetworkInterfaceConfig` type with appropriate field optionality The duplicate `NetworkInterfaceConfig` struct issue identified in Batch 2 is in `src-tauri/src/commands/proxmox.rs`, which is not included in this batch. This batch's TypeScript and frontend code is clean. ## Verdict: APPROVE The changes are functionally complete and follow established project patterns. No blocking issues exist in this batch. --- --- **Overall Verdict**: REQUEST CHANGES _Overall verdict reflects the most critical finding across all batches._
sarman added 1 commit 2026-06-22 02:51:06 +00:00
fix(proxmox): replace window.prompt with CloneDialog in VMList
Some checks failed
PR Review Automation / review (pull_request) Has been cancelled
Test / frontend-typecheck (pull_request) Has been cancelled
Test / frontend-tests (pull_request) Has been cancelled
Test / rust-fmt-check (pull_request) Has been cancelled
Test / rust-clippy (pull_request) Has been cancelled
Test / rust-tests (pull_request) Has been cancelled
b1f9727e02
Addresses PR review suggestion: window.prompt() blocks the UI thread and
doesn't match the app's dialog patterns. Replaced with a React Dialog
consistent with MigrationDialog and SnapshotDialog already in the same file.

CloneDialog takes pre-filled VMID (max+1) and name (source-clone), validates
both fields, and calls clone_vm via invoke with loading state on the button.
Author
Owner
  • BLOCKER (duplicate NetworkInterfaceConfig): Already resolved in a prior commit — verified only one definition exists at proxmox/network.rs, with a single use import in commands/proxmox.rs.
  • SUGGESTION — snapshot list shows only toast: Not reproducible in current code; list action already opens the SnapshotDialog with full snapshot detail cards.
  • SUGGESTION — blocking UI dialogs: Fixed. window.prompt() in handleClone replaced with CloneDialog, matching the MigrationDialog/SnapshotDialog pattern. The confirm() calls were already using @tauri-apps/plugin-dialog
    (line 9 import), not window.confirm.
- BLOCKER (duplicate NetworkInterfaceConfig): Already resolved in a prior commit — verified only one definition exists at proxmox/network.rs, with a single use import in commands/proxmox.rs. - SUGGESTION — snapshot list shows only toast: Not reproducible in current code; list action already opens the SnapshotDialog with full snapshot detail cards. - SUGGESTION — blocking UI dialogs: Fixed. window.prompt() in handleClone replaced with CloneDialog, matching the MigrationDialog/SnapshotDialog pattern. The confirm() calls were already using @tauri-apps/plugin-dialog (line 9 import), not window.confirm.
sarman merged commit 754960683c into beta 2026-06-22 02:52:06 +00:00
sarman deleted branch fix/proxmox-full-parity 2026-06-22 02:52:07 +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#131
No description provided.