fix: Proxmox PDM v1.2.0 bugs and feature parity #94

Merged
sarman merged 2 commits from fix/proxmox-v1.2.0-bugs into master 2026-06-11 21:04:42 +00:00
Owner

Summary

This PR fixes critical bugs preventing Proxmox PDM v1.2.0 from working correctly:

  • Cluster Save Not Working: Frontend now uses actual IPC calls instead of mock data
  • Settings → Proxmox Missing: Added new Proxmox settings page with update management
  • No Submenu Navigation: Implemented expandable Proxmox submenu with 12 management pages

Changes

Critical Fixes

  1. Added Proxmox cluster management commands to tauriCommands.ts
  2. Fixed RemotesPage.tsx to use actual IPC calls (listProxmoxClustersCmd, addProxmoxClusterCmd, removeProxmoxClusterCmd)
  3. Created ProxmoxSettings page with stable/pre-release channel selection
  4. Added Proxmox submenu navigation to sidebar with 12 management pages
  5. Updated docs/RELEASE_NOTES.md to include v1.2.0 Proxmox features

Testing

  • Rust fmt: Passed
  • Rust clippy: Passed (no warnings)
  • TypeScript type check: Passed (no errors)
  • ESLint: Passed (no errors)
  • Frontend tests: 386 tests passed

Files Changed

  • src/lib/tauriCommands.ts (+42 lines)
  • src/App.tsx (+125 lines)
  • src/pages/Proxmox/RemotesPage.tsx (+109 lines)
  • src/pages/Settings/Proxmox.tsx (+199 lines)
  • docs/RELEASE_NOTES.md (+67 lines)
  • Fixes: Cluster save functionality (mock data → IPC calls)
  • Fixes: Proxmox settings section in navigation
  • Fixes: Proxmox submenu navigation with expandable section
  • Addresses: Auto-updater missing from settings (now in ProxmoxSettings)
  • Addresses: Release notes missing v1.2.0 Proxmox features
## Summary This PR fixes critical bugs preventing Proxmox PDM v1.2.0 from working correctly: - **Cluster Save Not Working**: Frontend now uses actual IPC calls instead of mock data - **Settings → Proxmox Missing**: Added new Proxmox settings page with update management - **No Submenu Navigation**: Implemented expandable Proxmox submenu with 12 management pages ## Changes ### Critical Fixes 1. Added Proxmox cluster management commands to tauriCommands.ts 2. Fixed RemotesPage.tsx to use actual IPC calls (listProxmoxClustersCmd, addProxmoxClusterCmd, removeProxmoxClusterCmd) 3. Created ProxmoxSettings page with stable/pre-release channel selection 4. Added Proxmox submenu navigation to sidebar with 12 management pages 5. Updated docs/RELEASE_NOTES.md to include v1.2.0 Proxmox features ### Testing - ✅ Rust fmt: Passed - ✅ Rust clippy: Passed (no warnings) - ✅ TypeScript type check: Passed (no errors) - ✅ ESLint: Passed (no errors) - ✅ Frontend tests: 386 tests passed ## Files Changed - src/lib/tauriCommands.ts (+42 lines) - src/App.tsx (+125 lines) - src/pages/Proxmox/RemotesPage.tsx (+109 lines) - src/pages/Settings/Proxmox.tsx (+199 lines) - docs/RELEASE_NOTES.md (+67 lines) ## Related - Fixes: Cluster save functionality (mock data → IPC calls) - Fixes: Proxmox settings section in navigation - Fixes: Proxmox submenu navigation with expandable section - Addresses: Auto-updater missing from settings (now in ProxmoxSettings) - Addresses: Release notes missing v1.2.0 Proxmox features
sarman added 1 commit 2026-06-11 20:59:10 +00:00
fix: Proxmox PDM v1.2.0 bugs and feature parity
Some checks failed
Test / frontend-typecheck (pull_request) Successful in 1m43s
Test / frontend-tests (pull_request) Successful in 2m5s
PR Review Automation / review (pull_request) Successful in 4m0s
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
1f2ea3f842
- Add Proxmox cluster management commands to tauriCommands.ts
- Fix RemotesPage.tsx to use actual IPC calls instead of mock data
- Add Proxmox settings section to App.tsx settings navigation
- Create ProxmoxSettings page with update management (stable/pre-release)
- Add Proxmox submenu navigation to sidebar with expandable section
- Update docs/RELEASE_NOTES.md to include v1.2.0 Proxmox features

This fixes critical bugs preventing cluster persistence and navigation.
sarman reviewed 2026-06-11 21:03:06 +00:00
sarman left a comment
Author
Owner

Automated PR Review (qwen3-coder-next via liteLLM):\n\nSummary

The PR adds Proxmox Datacenter Manager v1.2.0 support, fixing critical bugs including cluster save functionality (now using real IPC calls), adding the Proxmox settings page, and implementing expandable submenu navigation with 12 management pages. The changes are well-scoped, properly typed, and follow existing patterns in the codebase.

Findings

  • [WARNING] src/lib/tauriCommands.ts:1636 - addProxmoxClusterCmd does not validate the clusterType parameter at the call site; TypeScript allows "ve" | "pbs" but the Rust backend (add_proxmox_cluster) expects a specific enum or string variant.
    Evidence:

    export const addProxmoxClusterCmd = (
      id: string,
      name: string,
      clusterType: "ve" | "pbs",
      ...
    

    The Rust function add_proxmox_cluster accepts a ClusterType enum, but there is no compile-time guarantee that the frontend passes "ve" or "pbs" consistently with Rust’s expectations.
    Fix: Add JSDoc or input validation in addProxmoxClusterCmd to clarify expected values and ensure the Rust enum mapping is robust (already implemented in Rust, but frontend should guard against invalid inputs like "vms" or ""). In practice, RemotesPage.tsx already maps correctly ('pve' -> 've', 'pbs' -> 'pbs'), so this is low risk.

  • [WARNING] src/pages/Proxmox/RemotesPage.tsx:55 - Password field in handleAddRemote is passed directly, but handleEditRemote passes an empty string '' as password when updating. This may unintentionally reset the password on edit if the backend uses password replacement rather than update.
    Evidence:

    await addProxmoxClusterCmd(
      config.id,
      config.name,
      config.type === 'pve' ? 've' : 'pbs',
      config.url.split(':')[0],
      parseInt(config.url.split(':').pop()) || (config.type === 'pve' ? 8006 : 8007),
      config.username,
      ''  // <-- password hardcoded to empty string
    );
    

    Fix: Omit the password in handleEditRemote, or pass a secure placeholder if the backend cannot accept an empty string. Ideally, the Rust backend should treat "" as "no change" rather than "clear password". If the backend does not support partial updates, the UI should either: (a) require user to re-enter password, or (b) call a dedicated update_proxmox_cluster command instead of reusing add_proxmox_cluster.

Verdict: APPROVE WITH COMMENTS

The PR addresses critical bugs and adds necessary functionality as described. Two minor implementation concerns have been identified around parameter validation and password handling during cluster updates—both have low risk but should be addressed before production release.

Automated PR Review (qwen3-coder-next via liteLLM):\n\n**Summary** The PR adds Proxmox Datacenter Manager v1.2.0 support, fixing critical bugs including cluster save functionality (now using real IPC calls), adding the Proxmox settings page, and implementing expandable submenu navigation with 12 management pages. The changes are well-scoped, properly typed, and follow existing patterns in the codebase. **Findings** - [WARNING] `src/lib/tauriCommands.ts:1636` - `addProxmoxClusterCmd` does not validate the `clusterType` parameter at the call site; TypeScript allows `"ve" | "pbs"` but the Rust backend (`add_proxmox_cluster`) expects a specific enum or string variant. Evidence: ```typescript export const addProxmoxClusterCmd = ( id: string, name: string, clusterType: "ve" | "pbs", ... ``` The Rust function `add_proxmox_cluster` accepts a `ClusterType` enum, but there is no compile-time guarantee that the frontend passes `"ve"` or `"pbs"` consistently with Rust’s expectations. Fix: Add JSDoc or input validation in `addProxmoxClusterCmd` to clarify expected values and ensure the Rust enum mapping is robust (already implemented in Rust, but frontend should guard against invalid inputs like `"vms"` or `""`). In practice, `RemotesPage.tsx` already maps correctly (`'pve' -> 've'`, `'pbs' -> 'pbs'`), so this is low risk. - [WARNING] `src/pages/Proxmox/RemotesPage.tsx:55` - Password field in `handleAddRemote` is passed directly, but `handleEditRemote` passes an empty string `''` as password when updating. This may unintentionally reset the password on edit if the backend uses password replacement rather than update. Evidence: ```typescript await addProxmoxClusterCmd( config.id, config.name, config.type === 'pve' ? 've' : 'pbs', config.url.split(':')[0], parseInt(config.url.split(':').pop()) || (config.type === 'pve' ? 8006 : 8007), config.username, '' // <-- password hardcoded to empty string ); ``` Fix: Omit the password in `handleEditRemote`, or pass a secure placeholder if the backend cannot accept an empty string. Ideally, the Rust backend should treat `""` as "no change" rather than "clear password". If the backend does not support partial updates, the UI should either: (a) require user to re-enter password, or (b) call a dedicated `update_proxmox_cluster` command instead of reusing `add_proxmox_cluster`. **Verdict**: APPROVE WITH COMMENTS The PR addresses critical bugs and adds necessary functionality as described. Two minor implementation concerns have been identified around parameter validation and password handling during cluster updates—both have low risk but should be addressed before production release.
sarman added 1 commit 2026-06-11 21:03:58 +00:00
Merge branch 'master' into fix/proxmox-v1.2.0-bugs
Some checks failed
PR Review Automation / review (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
Test / frontend-typecheck (pull_request) Has been cancelled
Test / frontend-tests (pull_request) Has been cancelled
f807a2fce7
sarman merged commit 75b8b445c4 into master 2026-06-11 21:04:42 +00:00
sarman deleted branch fix/proxmox-v1.2.0-bugs 2026-06-11 21:04:42 +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#94
No description provided.