From 1870d2fa8b4a304a0efe4c973759229e513c0835 Mon Sep 17 00:00:00 2001 From: Aswanidev Date: Wed, 4 Mar 2026 21:15:00 +0530 Subject: [PATCH 1/7] Revert "fix these issue" This reverts commit 0b4d4f57f4c14a0f8860699d91d5327121763629. --- app.go | 104 ++++++++++++--------------------------------------------- 1 file changed, 21 insertions(+), 83 deletions(-) diff --git a/app.go b/app.go index acf0d9b..862279f 100644 --- a/app.go +++ b/app.go @@ -673,109 +673,47 @@ func (a *App) SaveToHistory(item DownloadHistory) error { func (a *App) OpenFolder(path string) error { log.Printf("OpenFolder called with path: %s", path) - // If path is empty, return error - if path == "" { - return fmt.Errorf("path is empty") - } + // Clean the path + path = filepath.Clean(path) + log.Printf("Cleaned path: %s", path) - // Check if the path exists as-is first + // Check if path exists info, err := os.Stat(path) - if err == nil { - // Path exists, determine if it's a file or directory - if info.IsDir() { - // It's a directory, just open it - log.Printf("Opening directory: %s", path) - return a.openDirectory(path) - } - // It's a file, open the containing folder and select the file - log.Printf("Opening file with /select,: %s", path) - return a.openDirectoryWithSelect(path) - } - - // Path might be relative or might not exist anymore - // Try to get absolute path - absPath, absErr := filepath.Abs(path) - if absErr != nil { - log.Printf("Failed to get absolute path: %v", absErr) - // Try opening the parent directory anyway - dir := filepath.Dir(path) - log.Printf("Trying to open parent directory: %s", dir) - return a.openDirectory(dir) - } - - log.Printf("Absolute path: %s", absPath) - - // Check if absolute path exists - info, err = os.Stat(absPath) if err != nil { - log.Printf("Absolute path does not exist: %v", err) - // File might have been deleted, try to open the directory anyway - dir := filepath.Dir(absPath) - log.Printf("Trying to open directory: %s", dir) - // Check if directory exists - if _, dirErr := os.Stat(dir); dirErr != nil { - return fmt.Errorf("neither file nor directory exists: %s (tried: %s)", path, absPath) - } - return a.openDirectory(dir) - } - - if info.IsDir() { - log.Printf("Opening absolute directory: %s", absPath) - return a.openDirectory(absPath) - } - - log.Printf("Opening absolute file with /select,: %s", absPath) - return a.openDirectoryWithSelect(absPath) -} - -// openDirectory opens a directory using the system file explorer -func (a *App) openDirectory(dirPath string) error { - var cmd *exec.Cmd - - switch runtime.GOOS { - case "windows": - explorerPath := `C:\Windows\explorer.exe` - cmd = exec.Command(explorerPath, filepath.Clean(dirPath)) - case "darwin": - cmd = exec.Command("open", filepath.Clean(dirPath)) - default: // linux - cmd = exec.Command("xdg-open", filepath.Clean(dirPath)) + log.Printf("Path does not exist: %v", err) + return fmt.Errorf("path does not exist: %s", path) } - log.Printf("Executing directory command: %v", cmd) - return cmd.Start() -} + log.Printf("Path exists, isDir: %v", info.IsDir()) -// openDirectoryWithSelect opens a directory and selects/highlights the specific file -func (a *App) openDirectoryWithSelect(filePath string) error { var cmd *exec.Cmd - // Ensure we have an absolute path for the file - absPath, err := filepath.Abs(filePath) - if err != nil { - absPath = filePath - } - switch runtime.GOOS { case "windows": - // /select, opens the folder and highlights the file + // Use full path to explorer.exe to avoid PATH issues explorerPath := `C:\Windows\explorer.exe` - cmd = exec.Command(explorerPath, "/select,", absPath) + // If path is a file, use /select, to highlight it + // If path is a directory, just open it + if info.IsDir() { + log.Printf("Opening directory: %s", path) + cmd = exec.Command(explorerPath, path) + } else { + // /select, opens the folder and highlights the file + log.Printf("Opening file with /select,: %s", path) + cmd = exec.Command(explorerPath, "/select,", path) + } case "darwin": - // -R flag reveals (selects) the file in Finder - cmd = exec.Command("open", "-R", absPath) + cmd = exec.Command("open", path) default: // linux - // For linux, just open the parent directory - cmd = exec.Command("xdg-open", filepath.Dir(absPath)) + cmd = exec.Command("xdg-open", filepath.Dir(path)) } - log.Printf("Executing select command: %v", cmd) + log.Printf("Executing command: %v", cmd) return cmd.Start() } // ClearHistory clears all download history func (a *App) ClearHistory() error { - historyMu.Lock() defer historyMu.Unlock() From 75678de8faa89186e97995b88e75e6e78ca469fc Mon Sep 17 00:00:00 2001 From: Aswanidev Date: Wed, 4 Mar 2026 21:19:09 +0530 Subject: [PATCH 2/7] g --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 9e025b5..8cb10eb 100644 --- a/go.mod +++ b/go.mod @@ -3,12 +3,12 @@ module Predator go 1.25.0 require ( - github.com/lrstanley/go-ytdlp v1.3.0 + github.com/lrstanley/go-ytdlp v1.3.2 github.com/wailsapp/wails/v2 v2.11.0 ) require ( - github.com/ProtonMail/go-crypto v1.3.0 // indirect + github.com/ProtonMail/go-crypto v1.4.0 // indirect github.com/bep/debounce v1.2.1 // indirect github.com/cloudflare/circl v1.6.3 // indirect github.com/go-ole/go-ole v1.3.0 // indirect diff --git a/go.sum b/go.sum index 61b7913..3f04466 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -github.com/ProtonMail/go-crypto v1.3.0 h1:ILq8+Sf5If5DCpHQp4PbZdS1J7HDFRXz/+xKBiRGFrw= -github.com/ProtonMail/go-crypto v1.3.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE= +github.com/ProtonMail/go-crypto v1.4.0 h1:Zq/pbM3F5DFgJiMouxEdSVY44MVoQNEKp5d5QxIQceQ= +github.com/ProtonMail/go-crypto v1.4.0/go.mod h1:e1OaTyu5SYVrO9gKOEhTc+5UcXtTUa+P3uLudwcgPqo= github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY= github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0= github.com/cloudflare/circl v1.6.3 h1:9GPOhQGF9MCYUeXyMYlqTR6a5gTrgR/fBLXvUgtVcg8= @@ -30,8 +30,8 @@ github.com/leaanthony/slicer v1.6.0 h1:1RFP5uiPJvT93TAHi+ipd3NACobkW53yUiBqZheE/ github.com/leaanthony/slicer v1.6.0/go.mod h1:o/Iz29g7LN0GqH3aMjWAe90381nyZlDNquK+mtH2Fj8= github.com/leaanthony/u v1.1.1 h1:TUFjwDGlNX+WuwVEzDqQwC2lOv0P4uhTQw7CMFdiK7M= github.com/leaanthony/u v1.1.1/go.mod h1:9+o6hejoRljvZ3BzdYlVL0JYCwtnAsVuN9pVTQcaRfI= -github.com/lrstanley/go-ytdlp v1.3.0 h1:SZcyuMklsy+qj8Xy05uthydW4C0EYCEyOMl6bJrEr3g= -github.com/lrstanley/go-ytdlp v1.3.0/go.mod h1:VgjnTrvkTf+23JuySjyPq1iQ8ijSovBtTPpXH5XrLtI= +github.com/lrstanley/go-ytdlp v1.3.2 h1:ktOav5X8+ZByuaQPFUF3uiPxofw0L5MoQtck6iIkWhI= +github.com/lrstanley/go-ytdlp v1.3.2/go.mod h1:VgjnTrvkTf+23JuySjyPq1iQ8ijSovBtTPpXH5XrLtI= github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/matryer/is v1.4.1 h1:55ehd8zaGABKLXQUe2awZ99BD/PTc2ls+KV/dXphgEQ= github.com/matryer/is v1.4.1/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= From 888e67825eb6fd55d5e6d8a72b9a0eb408ad3575 Mon Sep 17 00:00:00 2001 From: Aswanidev Date: Wed, 4 Mar 2026 21:21:55 +0530 Subject: [PATCH 3/7] hope the merge issue solve and remove the darkmode png --- dark-mode.png | Bin 14230 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 dark-mode.png diff --git a/dark-mode.png b/dark-mode.png deleted file mode 100644 index a41726b662c1059fe5c1ba0d0df6a14ee0fc8afa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14230 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 l-ZiQJH~Pr1c;sIiNOk#1xJZR173ir0Aq Date: Wed, 4 Mar 2026 21:24:05 +0530 Subject: [PATCH 4/7] Revert "backup" This reverts commit 6da7ca6ebe19275fb7f39f146088c368f7c813ee. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 988fb45..c619310 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ <<<<<<< HEAD build/bin node_modules +frontend/dist TODO.md ======= From d449c4b9553092cdd4d9427a59686c6f88c0e8ee Mon Sep 17 00:00:00 2001 From: Aswanidev Date: Wed, 4 Mar 2026 21:25:33 +0530 Subject: [PATCH 5/7] f --- go.mod | 4 ---- 1 file changed, 4 deletions(-) diff --git a/go.mod b/go.mod index 71a8c85..2b7620a 100644 --- a/go.mod +++ b/go.mod @@ -7,12 +7,8 @@ module predator go 1.25.0 require ( -<<<<<<< HEAD - github.com/lrstanley/go-ytdlp v1.3.2 -======= github.com/lrstanley/go-ytdlp v1.3.0 ->>>>>>> d9ff223bd88c6ebe9484411f513d5b5c9516a5f0 github.com/wailsapp/wails/v2 v2.11.0 ) From 8b6d7ef7562a040c1fe88611c9571d845b477981 Mon Sep 17 00:00:00 2001 From: Aswanidev Date: Wed, 4 Mar 2026 21:29:07 +0530 Subject: [PATCH 6/7] Reapply "fix these issue" This reverts commit 1870d2fa8b4a304a0efe4c973759229e513c0835. --- app.go | 104 +++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 83 insertions(+), 21 deletions(-) diff --git a/app.go b/app.go index 862279f..acf0d9b 100644 --- a/app.go +++ b/app.go @@ -673,47 +673,109 @@ func (a *App) SaveToHistory(item DownloadHistory) error { func (a *App) OpenFolder(path string) error { log.Printf("OpenFolder called with path: %s", path) - // Clean the path - path = filepath.Clean(path) - log.Printf("Cleaned path: %s", path) + // If path is empty, return error + if path == "" { + return fmt.Errorf("path is empty") + } - // Check if path exists + // Check if the path exists as-is first info, err := os.Stat(path) + if err == nil { + // Path exists, determine if it's a file or directory + if info.IsDir() { + // It's a directory, just open it + log.Printf("Opening directory: %s", path) + return a.openDirectory(path) + } + // It's a file, open the containing folder and select the file + log.Printf("Opening file with /select,: %s", path) + return a.openDirectoryWithSelect(path) + } + + // Path might be relative or might not exist anymore + // Try to get absolute path + absPath, absErr := filepath.Abs(path) + if absErr != nil { + log.Printf("Failed to get absolute path: %v", absErr) + // Try opening the parent directory anyway + dir := filepath.Dir(path) + log.Printf("Trying to open parent directory: %s", dir) + return a.openDirectory(dir) + } + + log.Printf("Absolute path: %s", absPath) + + // Check if absolute path exists + info, err = os.Stat(absPath) if err != nil { - log.Printf("Path does not exist: %v", err) - return fmt.Errorf("path does not exist: %s", path) + log.Printf("Absolute path does not exist: %v", err) + // File might have been deleted, try to open the directory anyway + dir := filepath.Dir(absPath) + log.Printf("Trying to open directory: %s", dir) + // Check if directory exists + if _, dirErr := os.Stat(dir); dirErr != nil { + return fmt.Errorf("neither file nor directory exists: %s (tried: %s)", path, absPath) + } + return a.openDirectory(dir) + } + + if info.IsDir() { + log.Printf("Opening absolute directory: %s", absPath) + return a.openDirectory(absPath) } - log.Printf("Path exists, isDir: %v", info.IsDir()) + log.Printf("Opening absolute file with /select,: %s", absPath) + return a.openDirectoryWithSelect(absPath) +} +// openDirectory opens a directory using the system file explorer +func (a *App) openDirectory(dirPath string) error { var cmd *exec.Cmd switch runtime.GOOS { case "windows": - // Use full path to explorer.exe to avoid PATH issues explorerPath := `C:\Windows\explorer.exe` - // If path is a file, use /select, to highlight it - // If path is a directory, just open it - if info.IsDir() { - log.Printf("Opening directory: %s", path) - cmd = exec.Command(explorerPath, path) - } else { - // /select, opens the folder and highlights the file - log.Printf("Opening file with /select,: %s", path) - cmd = exec.Command(explorerPath, "/select,", path) - } + cmd = exec.Command(explorerPath, filepath.Clean(dirPath)) case "darwin": - cmd = exec.Command("open", path) + cmd = exec.Command("open", filepath.Clean(dirPath)) default: // linux - cmd = exec.Command("xdg-open", filepath.Dir(path)) + cmd = exec.Command("xdg-open", filepath.Clean(dirPath)) } - log.Printf("Executing command: %v", cmd) + log.Printf("Executing directory command: %v", cmd) + return cmd.Start() +} + +// openDirectoryWithSelect opens a directory and selects/highlights the specific file +func (a *App) openDirectoryWithSelect(filePath string) error { + var cmd *exec.Cmd + + // Ensure we have an absolute path for the file + absPath, err := filepath.Abs(filePath) + if err != nil { + absPath = filePath + } + + switch runtime.GOOS { + case "windows": + // /select, opens the folder and highlights the file + explorerPath := `C:\Windows\explorer.exe` + cmd = exec.Command(explorerPath, "/select,", absPath) + case "darwin": + // -R flag reveals (selects) the file in Finder + cmd = exec.Command("open", "-R", absPath) + default: // linux + // For linux, just open the parent directory + cmd = exec.Command("xdg-open", filepath.Dir(absPath)) + } + + log.Printf("Executing select command: %v", cmd) return cmd.Start() } // ClearHistory clears all download history func (a *App) ClearHistory() error { + historyMu.Lock() defer historyMu.Unlock() From 8ea32e65468ec6b87765d1755d390f333adf97c9 Mon Sep 17 00:00:00 2001 From: Aswanidev Date: Wed, 4 Mar 2026 22:17:53 +0530 Subject: [PATCH 7/7] finally fix --- .gitignore | 2 +- go.mod | 4 ++-- go.sum | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 914172f..f38c484 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ build/bin -node_modules + TODO.md diff --git a/go.mod b/go.mod index 9e025b5..8cb10eb 100644 --- a/go.mod +++ b/go.mod @@ -3,12 +3,12 @@ module Predator go 1.25.0 require ( - github.com/lrstanley/go-ytdlp v1.3.0 + github.com/lrstanley/go-ytdlp v1.3.2 github.com/wailsapp/wails/v2 v2.11.0 ) require ( - github.com/ProtonMail/go-crypto v1.3.0 // indirect + github.com/ProtonMail/go-crypto v1.4.0 // indirect github.com/bep/debounce v1.2.1 // indirect github.com/cloudflare/circl v1.6.3 // indirect github.com/go-ole/go-ole v1.3.0 // indirect diff --git a/go.sum b/go.sum index 61b7913..3f04466 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -github.com/ProtonMail/go-crypto v1.3.0 h1:ILq8+Sf5If5DCpHQp4PbZdS1J7HDFRXz/+xKBiRGFrw= -github.com/ProtonMail/go-crypto v1.3.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE= +github.com/ProtonMail/go-crypto v1.4.0 h1:Zq/pbM3F5DFgJiMouxEdSVY44MVoQNEKp5d5QxIQceQ= +github.com/ProtonMail/go-crypto v1.4.0/go.mod h1:e1OaTyu5SYVrO9gKOEhTc+5UcXtTUa+P3uLudwcgPqo= github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY= github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0= github.com/cloudflare/circl v1.6.3 h1:9GPOhQGF9MCYUeXyMYlqTR6a5gTrgR/fBLXvUgtVcg8= @@ -30,8 +30,8 @@ github.com/leaanthony/slicer v1.6.0 h1:1RFP5uiPJvT93TAHi+ipd3NACobkW53yUiBqZheE/ github.com/leaanthony/slicer v1.6.0/go.mod h1:o/Iz29g7LN0GqH3aMjWAe90381nyZlDNquK+mtH2Fj8= github.com/leaanthony/u v1.1.1 h1:TUFjwDGlNX+WuwVEzDqQwC2lOv0P4uhTQw7CMFdiK7M= github.com/leaanthony/u v1.1.1/go.mod h1:9+o6hejoRljvZ3BzdYlVL0JYCwtnAsVuN9pVTQcaRfI= -github.com/lrstanley/go-ytdlp v1.3.0 h1:SZcyuMklsy+qj8Xy05uthydW4C0EYCEyOMl6bJrEr3g= -github.com/lrstanley/go-ytdlp v1.3.0/go.mod h1:VgjnTrvkTf+23JuySjyPq1iQ8ijSovBtTPpXH5XrLtI= +github.com/lrstanley/go-ytdlp v1.3.2 h1:ktOav5X8+ZByuaQPFUF3uiPxofw0L5MoQtck6iIkWhI= +github.com/lrstanley/go-ytdlp v1.3.2/go.mod h1:VgjnTrvkTf+23JuySjyPq1iQ8ijSovBtTPpXH5XrLtI= github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/matryer/is v1.4.1 h1:55ehd8zaGABKLXQUe2awZ99BD/PTc2ls+KV/dXphgEQ= github.com/matryer/is v1.4.1/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU=