6ba7944bb2
fix: add unrar-free, use 7z for .zip extraction (more reliable)
...
- Added unrar-free package to backend installer
- Added .rar to archive extension detection
- Changed .zip extraction from unzip → 7z (x -y)
7z handles .zip, .7z, and other formats with one tool
- Added unrar handler for .rar files
2026-07-21 19:37:27 +00:00
7808b16946
fix: prevent double-nested directory on archive extraction
...
Archives like 64bit.7z that already contain a 64bit/ top-level dir
were extracted into STAGING_IN/64bit/, creating 64bit/64bit/ nesting.
Now extract into STAGING_IN root, then:
- If the archive produced a single dir matching the stem, use it
- Otherwise, collect scattered files into a stem-named subdirectory
Removes the need for nested path: 64bit/Debian.vmdk instead of
64bit/64bit/Debian.vmdk
2026-07-21 18:58:13 +00:00
c887ccd5a3
fix: uniform /api/v1/ prefix, real EFI detection, spec alignment
...
Backend:
- All routes now consistently under /api/v1/ (health, analyze, jobs)
- Replace dummy EFI heuristic with actual guestfish-based detect_efi()
- Add path traversal validation on analyze source_filename
- Use typed response models (HealthResponse, CleanupResponse) everywhere
- Clean up unused imports (Path, ErrorResponse)
Models:
- Align AnalyzeResponse with open-api.yaml (add vmid, remove bootable/error,
make efi_detectable nullable, deduplicate CleanupResponse)
Converter:
- Add detect_efi(disk_path) using guestfish list-filesystems
Frontend:
- Update api_client paths to /api/v1/health and /api/v1/analyze
- Remove unsupported 'network' field from job payload
Spec:
- Promote inline HealthResponse/CleanupResponse to named schemas
- Move /analyze and /health under /api/v1/ prefix
Docs:
- Add README.md with architecture, install, API reference, usage flow
2026-07-21 17:40:08 +00:00