Ariver
2026-06-03 ce96a0e5272d6bcdf732dd0fc1ff8a9d9c834a0c
privatevoice.src/internal/model/downloader.go
@@ -27,6 +27,7 @@
   if err := os.MkdirAll(modelsDir, 0755); err != nil {
      return fmt.Errorf("failed to create models dir: %w", err)
   }
   cleanupStaleDownloadDirs(profile, modelsDir)
   var lastErr error
   for i, url := range urls {
@@ -52,6 +53,13 @@
   return fmt.Errorf("download failed: %w", lastErr)
}
func cleanupStaleDownloadDirs(profile ModelProfile, modelsDir string) {
   downloadRoot := filepath.Join(modelsDir, ".downloads", profile.ID)
   if err := os.RemoveAll(downloadRoot); err != nil {
      logger.Info("Failed to remove stale download dir %s: %v", downloadRoot, err)
   }
}
func downloadAndInstallFromURL(profile ModelProfile, url, modelsDir string, attempt int, progress ProgressCallback) error {
   runID := fmt.Sprintf("%d-%d", time.Now().UnixNano(), attempt)
   downloadDir := filepath.Join(modelsDir, ".downloads", profile.ID, runID)