Some checks failed
Release Beta / autotag (push) Successful in 39s
Release Beta / changelog (push) Successful in 1m26s
Test / frontend-tests (push) Successful in 1m55s
Test / frontend-typecheck (push) Successful in 2m8s
Release Beta / build-macos-arm64 (push) Successful in 4m8s
Release Beta / build-linux-amd64 (push) Failing after 4m39s
Release Beta / build-windows-amd64 (push) Failing after 4m52s
Release Beta / build-linux-arm64 (push) Failing after 5m22s
Test / rust-clippy (push) Has been cancelled
Test / rust-tests (push) Has been cancelled
Test / rust-fmt-check (push) Has been cancelled
## Problem All three CI build platforms (linux-amd64, windows-amd64, linux-arm64) were failing with libsodium detection errors in release-beta.yml: - Linux: "libsodium not found via pkg-config or vcpkg" - Windows: "SODIUM_LIB_DIR is incompatible with SODIUM_USE_PKG_CONFIG" ## Root Cause The libsodium-sys-stable crate requires explicit environment configuration: - Linux needs SODIUM_USE_PKG_CONFIG=1 to find libsodium-dev packages - Windows needs SODIUM_LIB_DIR pointing to pre-built libs OR pkg-config (not both) - Cross-compilation requires complete PKG_CONFIG_PATH for arch-specific .pc files ## Solution ### release-beta.yml fixes: 1. **linux-amd64**: Added SODIUM_USE_PKG_CONFIG=1 2. **windows-amd64**: - Set SODIUM_LIB_DIR=/usr/x86_64-w64-mingw32/lib (was "") - Added SODIUM_USE_PKG_CONFIG=no (explicit disable) - Standardized SODIUM_STATIC=1 (was "yes") 3. **linux-arm64**: - Added SODIUM_USE_PKG_CONFIG=1 - Extended PKG_CONFIG_PATH to include /usr/aarch64-linux-gnu/lib/pkgconfig ### auto-tag.yml fixes: - **linux-arm64**: Extended PKG_CONFIG_PATH (same as release-beta.yml) ## Additional Fix Fixed flaky test `shell::pty::tests::test_is_alive` by adding retry logic for process reaping to handle OS timing variations (macOS was timing out). ## Validation ✅ Local build: cargo check passed ✅ Rust tests: 416 passed, 6 ignored ✅ Frontend tests: 386 passed (45 files) ✅ Linting: cargo clippy + eslint passed ⏳ CI validation: pending push to beta branch Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
116 lines
3.1 KiB
Markdown
116 lines
3.1 KiB
Markdown
# Pull Request Summary
|
|
|
|
## PR #100: Fix Proxmox Remote Add Error
|
|
|
|
**URL**: https://gogs.tftsr.com/sarman/tftsr-devops_investigation/pulls/100
|
|
|
|
**Branch**: `fix/proxmox-remote-add-error` → `beta`
|
|
|
|
**Version**: `1.2.3` → `1.2.4`
|
|
|
|
---
|
|
|
|
## Problem
|
|
|
|
Users could not add Proxmox remotes when providing URLs with port numbers (e.g., `https://172.0.0.18:8006`). The error displayed was: **"Failed to add remote"**
|
|
|
|
### Root Cause
|
|
The `RemotesPage.tsx` component incorrectly parsed URLs containing ports:
|
|
1. User enters: `https://172.0.0.18:8006`
|
|
2. Code strips protocol → `172.0.0.18:8006`
|
|
3. Code uses this **with port still attached** as hostname
|
|
4. Code **also** sends separate port parameter: `8006`
|
|
5. Backend receives malformed: `url: "172.0.0.18:8006"` + `port: 8006`
|
|
6. Connection fails
|
|
|
|
---
|
|
|
|
## Solution
|
|
|
|
Added URL parsing logic to properly handle ports in both add and edit operations:
|
|
|
|
```typescript
|
|
// Parse URL to extract hostname and port
|
|
let hostname = config.url.replace(/^https?:\/\//, '');
|
|
let port = config.type === 'pve' ? 8006 : 8007;
|
|
|
|
// If URL contains port, extract it
|
|
const portMatch = hostname.match(/:(\d+)$/);
|
|
if (portMatch) {
|
|
port = parseInt(portMatch[1], 10);
|
|
hostname = hostname.replace(/:\d+$/, '');
|
|
}
|
|
```
|
|
|
|
Now correctly handles:
|
|
- ✅ Full URLs with ports: `https://172.0.0.18:8006` → hostname: `172.0.0.18`, port: `8006`
|
|
- ✅ Hostnames only: `172.0.0.18` → hostname: `172.0.0.18`, port: `8006` (default)
|
|
- ✅ Custom ports: `https://192.168.1.100:8443` → hostname: `192.168.1.100`, port: `8443`
|
|
|
|
---
|
|
|
|
## Changes
|
|
|
|
### Modified Files
|
|
- **`src/pages/Proxmox/RemotesPage.tsx`**
|
|
- Fixed `handleAddRemote()` function
|
|
- Fixed `handleEditRemote()` function
|
|
- Added port extraction logic
|
|
- Properly separates hostname from port
|
|
|
|
### Version Bump
|
|
- `package.json`: `1.2.3` → `1.2.4`
|
|
- `src-tauri/Cargo.toml`: `1.2.3` → `1.2.4`
|
|
- `src-tauri/tauri.conf.json`: `1.2.3` → `1.2.4`
|
|
- `src-tauri/Cargo.lock`: Updated
|
|
- `src-tauri/gen/schemas/macOS-schema.json`: Regenerated
|
|
|
|
---
|
|
|
|
## Commits
|
|
|
|
1. **`666de6dd`** - `fix(proxmox): parse port from URL when adding remote`
|
|
2. **`58cbe525`** - `chore: bump version to 1.2.4`
|
|
3. **`0b409c32`** - `chore: update Cargo.lock and schema for v1.2.4`
|
|
|
|
---
|
|
|
|
## Testing
|
|
|
|
### Completed
|
|
- [x] ESLint checks passed
|
|
- [x] Rust compilation successful
|
|
- [x] Database corruption fixed (removed 0-byte DB)
|
|
|
|
### Required Before Merge
|
|
- [ ] Manual test: Add remote with `https://172.0.0.18:8006`
|
|
- [ ] Manual test: Add remote with `172.0.0.18` (should use port 8006)
|
|
- [ ] Manual test: Add PBS remote with custom port
|
|
- [ ] Manual test: Edit existing remote and verify port changes
|
|
- [ ] Verify remote connection succeeds
|
|
- [ ] Verify VMs/containers load after adding remote
|
|
- [ ] Test with self-signed certificates
|
|
- [ ] Test with API token authentication
|
|
|
|
---
|
|
|
|
## Stats
|
|
|
|
- **Files changed**: 6
|
|
- **Additions**: +263 lines
|
|
- **Deletions**: -10 lines
|
|
- **State**: Open, mergeable
|
|
- **CI Status**: Pending
|
|
|
|
---
|
|
|
|
## Next Steps
|
|
|
|
1. ✅ Branch pushed to origin
|
|
2. ✅ PR created (#100)
|
|
3. ⏳ Awaiting review
|
|
4. ⏳ Manual testing
|
|
5. ⏳ Merge to beta
|
|
6. ⏳ Test on beta branch
|
|
7. ⏳ Merge to master (if applicable)
|