- Add tauri-plugin-updater for app auto-updates - Create Settings/Updater page with channel selection (Stable/Pre-Release) - Bump version to 1.2.1 in Cargo.toml and tauri.conf.json - Remove dummy data from Proxmox RemotesPage - Collapse Proxmox section by default in sidebar - Add updater backend commands: check_app_updates, install_app_updates - Update plan document with implementation details
11 KiB
Proxmox Integration - v1.2.1 Fixes Plan
Executive Summary
This plan addresses 4 critical issues reported against the Proxmox integration and ensures proper feature parity with Proxmox Datacenter Manager (PDM) while maintaining MIT license compliance.
Version: v1.2.1
Branch: fix/proxmox-v1.2.1
Status: Planning Phase
Critical Issues to Fix
Issue 1: Auto-updater for tftsr Application ❌
Problem: Auto-updater for the tftsr application itself is missing. User wants to pull from latest Stable and Pre-Release builds.
Root Cause:
- PDM does NOT have an application auto-updater (it's a server-side app)
- tftsr has NO auto-updater implementation
- No Tauri updater plugin installed
- No updater UI in Settings section
Tauri Auto-Updater Requirements:
tauri-plugin-updater = "2"dependency- Updater configuration in
tauri.conf.json - Settings UI for channel selection (Stable/Pre-Release)
- Backend commands for checking/updating
Solution:
- Add
tauri-plugin-updaterto Cargo.toml - Configure updater in tauri.conf.json with Gitea releases endpoint
- Create Settings UI page for updater configuration
- Add channel selector (Stable vs Pre-Release)
- Implement check/update commands
Files to Modify:
src-tauri/Cargo.toml- add updater plugin, bump version to 1.2.1src-tauri/tauri.conf.json- add updater config, bump version to 1.2.1src/App.tsx- add updater routesrc/pages/Settings/- add updater UIsrc-tauri/src/commands/system.rs- add updater commands
Gitea Release API:
- Stable:
https://gogs.tftsr.com/api/v1/repos/sarman/tftsr-devops_investigation/releases?latest=true - Pre-Release:
https://gogs.tftsr.com/api/v1/repos/sarman/tftsr-devops_investigation/releases?prerelease=true
Issue 2: Dummy Data Preloaded ❌
Problem: Dummy Proxmox connection data is preloaded in the UI
Root Cause: src/pages/Proxmox/RemotesPage.tsx lines 21-22 contain hardcoded dummy data:
const [remotes, setRemotes] = useState<RemoteInfo[]>([
{ id: '1', name: 'Production Cluster', url: 'https://pve1.example.com:8006', ... },
{ id: '2', name: 'Backup Server', url: 'https://pbs1.example.com:8007', ... },
]);
Solution:
- Change initial state to empty array:
useState<RemoteInfo[]>([]) - Fetch real data from backend via
list_proxmox_clusterscommand - Display empty state UI when no remotes configured
Files to Modify:
src/pages/Proxmox/RemotesPage.tsx- remove hardcoded data
Issue 3: Cannot Create/Save Proxmox Connections ❌
Problem: User cannot create and save Proxmox connections to test functionality
Root Cause: Frontend uses React component state instead of calling backend API commands. The handleAddRemote and handleEditRemote functions only update local state, not the database.
Solution:
- Add missing Tauri command wrappers (see Issue 4)
- Update frontend to call backend commands:
add_proxmox_cluster- for creating new connectionsremove_proxmox_cluster- for deleting connectionslist_proxmox_clusters- for fetching existing connections
Files to Modify:
src/pages/Proxmox/RemotesPage.tsx- wire up backend commandssrc-tauri/src/commands/proxmox.rs- verify all commands exist
Issue 4: Proxmox Section Collapsed by Default ⚠️
Problem: Proxmox section should be collapsed by default in sidebar
Solution:
- Modify
src/App.tsxsidebar configuration - Set Proxmox menu item to collapsed state by default
- User can expand as needed
Files to Modify:
src/App.tsx- adjust sidebar default state
PDM Feature Parity Analysis
What PDM Actually Has (from /home/sarman/Documents/proxmox-datacenter-manager)
✅ Implemented in tftsr (Feature Parity Achieved)
- Dashboard Widgets - 11 widget types
- Resource Tree View - Hierarchical browser
- VM Manager UI - Start/stop/reboot/shutdown
- Ceph Manager UI - Pools, OSDs, monitors
- SDN Manager UI - EVPN zones, virtual networks
- Firewall Manager UI - Rule management
- HA Groups UI - Group management
- User Management UI - Realm management
- Certificate Manager UI - Certificate management
- Subscription Registry UI - Subscription keys
- Search Functionality - Global search (Ctrl+Space)
- Notes System - Remote notes
- Remote Shell - Terminal access
- Task Management - Task list and status
❌ Missing in tftsr (Backend Commands Only)
- VM Operations - Create, clone, delete VMs
- VM Snapshots - Create, rollback, delete snapshots
- Backup Job Management - Create, edit, delete jobs
- Ceph Pool Management - Create, delete, quota management
- Ceph OSD Management - Set weight, mark in/out, zap
- Firewall Rule Management - Move up/down, enable/disable
- HA Group Management - Create, edit, delete groups
- Auth Realm Management - Create, edit, delete realms
- Certificate Management - Upload, delete, renew
- Subscription Management - Add, remove subscription keys
⚠️ Documentation Issues
- "Phase 8-17" claimed as complete but no IPC interface
- "100% feature parity" overstated - missing backend commands
- UI components exist but no backend integration
MIT Compliance Requirements
CRITICAL: Do NOT Copy PDM Code
PDM License: AGPL-3 (NOT MIT compatible)
What We CAN Do:
- ✅ Use PDM API documentation as reference
- ✅ Implement features from scratch
- ✅ Follow tftsr's architecture patterns
- ✅ Use official Proxmox VE/PBS API docs
What We CANNOT Do:
- ❌ Copy PDM source code directly
- ❌ Use PDM UI components
- ❌ Use PDM Rust modules
- ❌ Reference PDM code in implementation
Implementation Strategy:
- Review PDM's API endpoints in
server/src/api/ - Implement equivalent Rust backend commands in tftsr
- Create React/TypeScript UI components in tftsr
- Ensure all code follows tftsr's existing patterns
Implementation Plan
Phase 1: Critical Fixes (High Priority)
Time Estimate: 3-4 hours
- Create new branch
fix/proxmox-v1.2.1 - Add tauri-plugin-updater - Enable auto-updater for tftsr
- Configure updater in tauri.conf.json - Gitea releases endpoint
- Create Settings UI page - Channel selector (Stable/Pre-Release)
- Add updater backend commands - Check, download, install updates
- Remove dummy data from
RemotesPage.tsx - Fix connection save - wire frontend to backend commands
- Add Proxmox collapsed to sidebar default
- Update CHANGELOG.md to v1.2.1
Phase 2: Backend Command Wrappers (Medium Priority)
Time Estimate: 3-4 hours
- Add missing Tauri commands for:
- VM operations (create, clone, delete)
- Snapshot operations (create, rollback, delete)
- Backup job management (create, edit, delete)
- Ceph pool management (create, delete, quota)
- Ceph OSD management (weight, in/out, zap)
- Firewall rules (move, enable/disable)
- HA groups (create, edit, delete)
- Auth realms (create, edit, delete)
- Certificates (upload, delete, renew)
- Subscriptions (add, remove keys)
Phase 3: Documentation Updates (Medium Priority)
Time Estimate: 1-2 hours
- Update feature parity docs - correct "100% complete" claims
- Update implementation summary - reflect actual status
- Add missing features section
- Remove outdated phase claims
Phase 4: Verification (High Priority)
Time Estimate: 1-2 hours
- Run cargo fmt - format Rust code
- Run cargo clippy - fix warnings
- Run cargo test - verify all tests pass
- Run npm run build - verify frontend builds
- Run npm run test - verify frontend tests pass
Files to Modify
Critical (Phase 1)
src-tauri/Cargo.toml- Add tauri-plugin-updater, update version to 1.2.1src-tauri/tauri.conf.json- Add updater config, update version to 1.2.1src/pages/Proxmox/RemotesPage.tsx- Remove dummy data, add backend integrationsrc/App.tsx- Make Proxmox section collapsed by default, add updater routeCHANGELOG.md- Add v1.2.1 entrysrc-tauri/src/commands/system.rs- Add updater commandssrc/pages/Settings/- Create updater settings page
Backend (Phase 2)
src-tauri/src/commands/proxmox.rs- Add missing command wrapperssrc-tauri/src/proxmox/*.rs- Verify backend functions exist
Documentation (Phase 3)
docs/PROXMOX-FEATURE-PARITY-STATUS.md- Correct phase claimsdocs/PROXMOX-COMPLETE.md- Update statusdocs/PROXMOX-IMPLEMENTATION-SUMMARY.md- Update implementation statusdocs/wiki/Proxmox-Management.md- Add if missing
Testing Strategy
Manual Testing Checklist
- Create new Proxmox VE connection
- Create new Proxmox PBS connection
- Edit existing connection
- Delete connection
- List all connections
- Verify no dummy data on page load
- Verify Proxmox section collapsed by default
- Test VM operations (start/stop/reboot/shutdown)
- Test Ceph pool operations
- Test SDN zone operations
- Test firewall rule operations
Automated Testing
- Rust unit tests pass (64 tests)
- Rust clippy passes (0 warnings)
- Rust format check passes
- TypeScript compilation passes
- ESLint passes (0 errors)
- Frontend unit tests pass (13 tests)
Success Criteria
Issue Resolution
- No dummy data preloaded in Proxmox remotes
- User can create, edit, delete Proxmox connections
- Connections saved to database (not just React state)
- Proxmox section collapsed by default in sidebar
- Auto-updater implemented with Stable/Pre-Release channel selection
- Updates download from Gitea releases API
Feature Parity
- All documented PDM features implemented
- Backend command wrappers for all UI components
- Frontend calls backend commands correctly
- Documentation reflects actual implementation status
Code Quality
- 0 clippy warnings
- 0 test failures
- 0 TypeScript errors
- 0 ESLint errors
- MIT license compliance verified
Risks & Mitigations
Risk 1: Backend Commands Missing
Mitigation: Verify all backend functions exist in src-tauri/src/proxmox/ before adding command wrappers.
Risk 2: Frontend Integration Breaking
Mitigation: Test each change incrementally, commit after each working change.
Risk 3: Documentation Inconsistency
Mitigation: Update all docs in single commit to ensure consistency.
Risk 4: MIT Compliance Violation
Mitigation: Never copy PDM source code. Use only API documentation as reference.
Notes
- PDM does NOT have app auto-updater - it's a server-side app with manual updates
- PDM uses Yew (Rust WASM) - completely different from tftsr's React/TypeScript
- PDM is AGPL-3 - cannot copy code, must implement from scratch
- tftsr has solid foundation - many UI components exist, need backend integration
- Documentation overstated - "100% complete" claims need correction
- Auto-updater for tftsr - Will use Tauri's updater plugin with Gitea releases API
- Version bump required - Cargo.toml (1.2.0 → 1.2.1), tauri.conf.json (1.1.0 → 1.2.1)
- Updater location - No updater currently exists in Proxmox section; this issue is about adding app auto-updater to Settings, not moving existing Proxmox updates
Document Version: 1.0
Last Updated: 2026-06-12
Author: AI Assistant
Status: Planning Phase - Ready for User Approval