diff --git a/GITHUB_RELEASE_v2.0.txt b/GITHUB_RELEASE_v2.0.txt new file mode 100644 index 0000000..2b026aa --- /dev/null +++ b/GITHUB_RELEASE_v2.0.txt @@ -0,0 +1,99 @@ +# PS5 Upload Suite v2.0.0 - Feature-Rich Release + +## šŸŽ‰ What's New - 4 Major Features Added! + +### 1. šŸ“„ Download Files (PS5 → PC) +- Right-click any file → "ā¬‡ļø Download to PC" +- Save file dialog for destination +- Real-time progress with speed tracking +- Optimized with sendfile for maximum speed + +### 2. šŸ” File Search +- Search box in PS5 Files panel +- Real-time filtering as you type +- Case-insensitive search +- Quick "Clear" button + +### 3. ⭐ Favorites/Bookmarks +- Save frequently used PS5 paths +- Quick dropdown navigation +- Add/Remove favorite paths +- Persistent JSON storage + +### 4. šŸŽ® Multi-PS5 Support +- Save multiple PS5 profiles (IP + name) +- Quick switch between consoles +- Dropdown profile selector +- Persistent profile storage + +--- + +## šŸ“¦ Installation + +### Server (PS5) +1. Copy `ps5_upload_server.elf` to `/data/etaHEN/payloads/` +2. Load with elfldr +3. Server starts on port 9113 + +### Client (Windows) +1. Download `PS5Upload.exe` +2. Run on Windows 10/11 +3. Enter PS5 IP and connect + +--- + +## šŸš€ Performance + +- **Upload Speed:** 100-120 MB/s (Gigabit Ethernet) +- **Download Speed:** Same high-speed protocol +- **Stability:** Zero connection drops (from v1.3.0) +- **Tested:** 42,801+ files uploaded successfully + +--- + +## šŸ”§ Technical Details + +### New Protocol Command +- `CMD_DOWNLOAD_FILE` (0x13) - Download files from PS5 + +### Server Changes +- Added sendfile-based download handler +- Fixed LIST_DIR to return actual file sizes +- Zero-copy file transfer + +### Client Changes +- 4 new UI panels (Search, Favorites, Profiles, Download) +- JSON-based persistence (ps5_profiles.json, ps5_favorites.json) +- Custom dark theme for all ComboBox dropdowns +- ~500+ lines of new code + +--- + +## ā¬†ļø Upgrading from v1.3.0 + +1. Replace server: Copy new `ps5_upload_server.elf` to PS5 +2. Replace client: Download new `PS5Upload.exe` +3. Your settings will be preserved + +**New files created:** +- `ps5_profiles.json` - Saved PS5 profiles +- `ps5_favorites.json` - Saved favorite paths + +--- + +## šŸ“‹ Files in This Release + +- `ps5_upload_server.elf` (129 KB) - PS5 server payload +- `PS5Upload.exe` (8.2 MB) - Windows client (self-contained) + +--- + +## šŸ™ Credits + +**By Manos** + +Special thanks to the PS5 homebrew community! + +--- + +**Enjoy the new features!** šŸš€ diff --git a/GITHUB_UPLOAD_INSTRUCTIONS.md b/GITHUB_UPLOAD_INSTRUCTIONS.md deleted file mode 100644 index fa4c200..0000000 --- a/GITHUB_UPLOAD_INSTRUCTIONS.md +++ /dev/null @@ -1,263 +0,0 @@ -# GitHub Upload Instructions - PS5 Upload Suite - -## šŸ“ Correct Folder to Upload - -**Source Path:** -``` -C:\Users\HACKMAN\Desktop\ps5 test\ps5_rom_keys\ps5_upload_suite\client\bin\Release\net6.0-windows\win-x64\ -``` - -This folder contains the **complete, self-contained Windows executable** with all dependencies. - ---- - -## šŸ—‘ļø Step 1: Delete Old Release on GitHub - -1. Go to your GitHub repository -2. Navigate to **Releases** tab -3. Find the old/incorrect release -4. Click **Delete** on the old release -5. Confirm deletion - -**Or delete via Git:** -```bash -# Delete old tag -git tag -d v1.0 -git push origin :refs/tags/v1.0 - -# Delete old files from repository -git rm -r ps5upload-windows-x64/ -git commit -m "Remove incorrect Windows build" -git push origin main -``` - ---- - -## šŸ“¦ Step 2: Create Release Package - -### Option A: Via PowerShell (Automated) - -```powershell -# Navigate to project root -cd "C:\Users\HACKMAN\Desktop\ps5 test\ps5_rom_keys\ps5_upload_suite" - -# Create release directory -New-Item -ItemType Directory -Force -Path ".\github_release" - -# Copy correct files -Copy-Item -Path ".\client\bin\Release\net6.0-windows\win-x64\*" -Destination ".\github_release\" -Recurse - -# Copy payload -Copy-Item -Path ".\payload\ps5_upload_server.elf" -Destination ".\github_release\" - -# Create ZIP -Compress-Archive -Path ".\github_release\*" -DestinationPath ".\PS5Upload-Windows-x64-v1.0.zip" -Force - -Write-Host "Release package created: PS5Upload-Windows-x64-v1.0.zip" -``` - -### Option B: Manual - -1. Create new folder: `PS5Upload-Windows-x64` -2. Copy **ALL files** from `win-x64\` folder -3. Add `ps5_upload_server.elf` from `payload\` folder -4. Create ZIP: `PS5Upload-Windows-x64-v1.0.zip` - ---- - -## ā¬†ļø Step 3: Upload to GitHub - -### Via GitHub Web Interface: - -1. Go to your repository on GitHub -2. Click **Releases** → **Create a new release** -3. Fill in: - - **Tag:** `v1.0` - - **Title:** `PS5 Upload Suite v1.0 - Windows x64` - - **Description:** - ```markdown - # PS5 Upload Suite v1.0 - - ## Windows x64 Release - - Self-contained executable for Windows 10/11 (64-bit) - No .NET Runtime installation required! - - ## What's Included: - - PS5Upload.exe (Windows GUI client) - - ps5_upload_server.elf (PS5 server payload) - - All required dependencies - - ## How to Use: - 1. Extract ZIP file - 2. Run PS5Upload.exe - 3. Load ps5_upload_server.elf to PS5 (via etaHEN) - 4. Connect and upload files! - - ## Requirements: - - Windows 10/11 (64-bit) - - PS5 with etaHEN 2.0+ or GoldHEN - - Network connection to PS5 - - ## File Size: - - Full package: ~50 MB - - Includes all .NET 6.0 dependencies - ``` -4. **Attach files:** - - Upload `PS5Upload-Windows-x64-v1.0.zip` -5. Click **Publish release** - -### Via Git Command Line: - -```bash -# Navigate to repository -cd "C:\Users\HACKMAN\Desktop\ps5 test\ps5_rom_keys\ps5_upload_suite" - -# Add correct files -git add client/bin/Release/net6.0-windows/win-x64/ -git commit -m "Add correct Windows x64 build with all dependencies" -git push origin main - -# Create and push tag -git tag -a v1.0 -m "PS5 Upload Suite v1.0 - Windows x64" -git push origin v1.0 - -# Upload release asset via GitHub CLI (if installed) -gh release create v1.0 PS5Upload-Windows-x64-v1.0.zip --title "PS5 Upload Suite v1.0" --notes "Self-contained Windows x64 release" -``` - ---- - -## šŸ“ Step 4: Update Repository README - -Add download link to main README.md: - -```markdown -## Download - -### Latest Release: v1.0 - -**Windows (x64):** -- [PS5Upload-Windows-x64-v1.0.zip](https://github.com/YOUR_USERNAME/ps5_upload_suite/releases/download/v1.0/PS5Upload-Windows-x64-v1.0.zip) -- Size: ~50 MB -- Self-contained (no .NET installation required) - -**PS5 Server:** -- Included in Windows package: `ps5_upload_server.elf` -- Load via etaHEN or GoldHEN - -### System Requirements: -- **Windows:** 10/11 (64-bit) -- **PS5:** Firmware with etaHEN 2.0+ or GoldHEN -``` - ---- - -## āœ… Verification Checklist - -Before uploading, verify: - -- [ ] Folder contains `PS5Upload.exe` (8+ MB) -- [ ] Folder contains `PS5Upload.dll` -- [ ] Folder contains `PS5Upload.runtimeconfig.json` -- [ ] Folder contains all DLL dependencies (100+ files) -- [ ] `ps5_upload_server.elf` is included -- [ ] ZIP file is created correctly -- [ ] Test: Extract ZIP and run `PS5Upload.exe` - should work without errors - ---- - -## šŸ› Common Issues - -### "The application requires .NET Runtime" -**Problem:** Wrong folder uploaded (missing dependencies) -**Solution:** Use the `win-x64` folder, not `release` folder - -### "Missing DLL files" -**Problem:** Incomplete upload -**Solution:** Make sure ALL files from `win-x64` folder are included - -### "Application won't start" -**Problem:** Corrupted ZIP or missing files -**Solution:** Re-create ZIP from scratch, include all files - ---- - -## šŸ“Š File Structure for GitHub - -``` -PS5Upload-Windows-x64-v1.0.zip -ā”œā”€ā”€ PS5Upload.exe (Main executable) -ā”œā”€ā”€ PS5Upload.dll (Application library) -ā”œā”€ā”€ PS5Upload.runtimeconfig.json (Runtime configuration) -ā”œā”€ā”€ ps5_upload_server.elf (PS5 server payload) -ā”œā”€ā”€ Accessibility.dll (Dependency) -ā”œā”€ā”€ D3DCompiler_47_cor3.dll (Dependency) -ā”œā”€ā”€ DirectWriteForwarder.dll (Dependency) -ā”œā”€ā”€ Microsoft.*.dll (100+ Microsoft dependencies) -ā”œā”€ā”€ PresentationCore.dll (WPF dependency) -ā”œā”€ā”€ PresentationFramework.dll (WPF dependency) -ā”œā”€ā”€ ReachFramework.dll (WPF dependency) -ā”œā”€ā”€ System.*.dll (System dependencies) -ā”œā”€ā”€ UIAutomationClient.dll (UI dependency) -ā”œā”€ā”€ UIAutomationProvider.dll (UI dependency) -ā”œā”€ā”€ UIAutomationTypes.dll (UI dependency) -ā”œā”€ā”€ WindowsBase.dll (Windows dependency) -ā”œā”€ā”€ WindowsFormsIntegration.dll (Windows dependency) -ā”œā”€ā”€ api-ms-win-*.dll (Windows API dependencies) -ā”œā”€ā”€ clrcompression.dll (Compression) -ā”œā”€ā”€ clretwrc.dll (ETW) -ā”œā”€ā”€ clrjit.dll (JIT compiler) -ā”œā”€ā”€ coreclr.dll (CoreCLR runtime) -ā”œā”€ā”€ createdump.exe (Debug tool) -ā”œā”€ā”€ hostfxr.dll (Host) -ā”œā”€ā”€ hostpolicy.dll (Host policy) -ā”œā”€ā”€ mscordaccore.dll (DAC) -ā”œā”€ā”€ mscordaccore_amd64_amd64_*.dll (DAC) -ā”œā”€ā”€ mscordbi.dll (Debugger) -ā”œā”€ā”€ mscorlib.dll (Core library) -ā”œā”€ā”€ msquic.dll (QUIC) -ā”œā”€ā”€ ucrtbase.dll (C runtime) -ā”œā”€ā”€ vcruntime140.dll (VC runtime) -└── vcruntime140_cor3.dll (VC runtime) -``` - -**Total:** ~150 files, ~50 MB - ---- - -## šŸŽÆ Quick Commands Summary - -```powershell -# 1. Create release package -cd "C:\Users\HACKMAN\Desktop\ps5 test\ps5_rom_keys\ps5_upload_suite" -Compress-Archive -Path ".\client\bin\Release\net6.0-windows\win-x64\*" -DestinationPath ".\PS5Upload-Windows-x64-v1.0.zip" -Force - -# 2. Test locally -Expand-Archive -Path ".\PS5Upload-Windows-x64-v1.0.zip" -DestinationPath ".\test_extract" -Force -.\test_extract\PS5Upload.exe - -# 3. Upload to GitHub (manual via web interface) -# Go to: https://github.com/YOUR_USERNAME/ps5_upload_suite/releases/new -# Upload: PS5Upload-Windows-x64-v1.0.zip -``` - ---- - -## āœ… Final Steps - -1. **Delete old release** on GitHub -2. **Create ZIP** from `win-x64` folder -3. **Test ZIP** locally (extract and run) -4. **Upload to GitHub** as new release -5. **Update README** with download link -6. **Announce** the correct release - ---- - -**The correct folder is:** -``` -C:\Users\HACKMAN\Desktop\ps5 test\ps5_rom_keys\ps5_upload_suite\client\bin\Release\net6.0-windows\win-x64\ -``` - -**This contains everything needed for a working Windows release!** diff --git a/PS5Upload-Windows-x64-v1.1-BugFix.zip b/PS5Upload-Windows-x64-v1.1-BugFix.zip deleted file mode 100644 index b931141..0000000 Binary files a/PS5Upload-Windows-x64-v1.1-BugFix.zip and /dev/null differ diff --git a/PS5Upload-Windows-x64-v1.2-Complete.zip b/PS5Upload-Windows-x64-v1.2-Complete.zip deleted file mode 100644 index 0c75bdf..0000000 Binary files a/PS5Upload-Windows-x64-v1.2-Complete.zip and /dev/null differ diff --git a/PS5Upload-Windows-x64-v1.3.0-Stable.zip b/PS5Upload-Windows-x64-v1.3.0-Stable.zip deleted file mode 100644 index 0c75bdf..0000000 Binary files a/PS5Upload-Windows-x64-v1.3.0-Stable.zip and /dev/null differ diff --git a/PS5Upload-Windows-x64-v1.0.zip b/PS5Upload_v2.0.0_Windows.zip similarity index 77% rename from PS5Upload-Windows-x64-v1.0.zip rename to PS5Upload_v2.0.0_Windows.zip index 37b0299..af81379 100644 Binary files a/PS5Upload-Windows-x64-v1.0.zip and b/PS5Upload_v2.0.0_Windows.zip differ diff --git a/README.md b/README.md index dec579e..a0aa3dd 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,11 @@ **By Manos** -**Version 1.3.0 - Stable Release** +**Version 2.0.0 - Feature-Rich Release** Custom high-speed file transfer system for PS5 with etaHEN. Achieves **100+ MB/s** transfer speeds using a custom binary protocol. -⭐ **NEW in v1.3.0:** Complete stability overhaul - **42,801+ files uploaded with ZERO errors!** +⭐ **NEW in v2.0.0:** 4 Major Features Added - Download Files, File Search, Favorites/Bookmarks, Multi-PS5 Support! ![PS5 Upload Client](screenshots/screenshot1.png) ![Upload in Progress](screenshots/screenshot2.png) @@ -86,6 +86,10 @@ Custom high-speed file transfer system for PS5 with etaHEN. Achieves **100+ MB/s āœ… **Real-time Progress** - Speed & percentage āœ… **Folder Upload** - Recursive directory upload āœ… **Storage Info** - Free space display +āœ… **Download Files** - Download from PS5 to PC (NEW v2.0) +āœ… **File Search** - Real-time filtering of PS5 files (NEW v2.0) +āœ… **Favorites/Bookmarks** - Quick navigation to saved paths (NEW v2.0) +āœ… **Multi-PS5 Support** - Save and switch between multiple PS5 profiles (NEW v2.0) --- @@ -154,6 +158,7 @@ See [PROTOCOL.md](PROTOCOL.md) for detailed protocol documentation. - `START_UPLOAD` - Begin file upload - `UPLOAD_CHUNK` - Upload file chunk - `END_UPLOAD` - Finish upload +- `DOWNLOAD_FILE` - Download file from PS5 (NEW v2.0) - `SHUTDOWN` - Shutdown server --- @@ -186,15 +191,38 @@ See [PROTOCOL.md](PROTOCOL.md) for detailed protocol documentation. --- -## šŸ“ What's New in v1.3.0 +## šŸ“ What's New in v2.0.0 -See [CHANGELOG.md](CHANGELOG.md) for complete list of all 15 bug fixes. +### šŸŽ‰ 4 Major New Features: -### Highlights: +#### 1. šŸ“„ Download Files (PS5 → PC) +- Right-click any file → "ā¬‡ļø Download to PC" +- Save file dialog for destination selection +- Real-time progress tracking with speed display +- Optimized with sendfile for maximum speed + +#### 2. šŸ” File Search +- Search box in PS5 Files panel +- Real-time filtering as you type +- Case-insensitive search +- Quick "Clear" button to reset + +#### 3. ⭐ Favorites/Bookmarks +- Save frequently used PS5 paths +- Quick dropdown navigation +- Add/Remove favorite paths +- Persistent storage in JSON + +#### 4. šŸŽ® Multi-PS5 Support +- Save multiple PS5 profiles (IP + name) +- Quick switch between different PS5 consoles +- Dropdown profile selector +- Persistent profile storage + +### Previous Stability (v1.3.0): - āœ… **Zero connection drops** - 5 minute socket timeout + aggressive keepalive - āœ… **Fully responsive UI** - Async updates + throttled logging - āœ… **No memory leaks** - Proper resource disposal -- āœ… **Optimal stability** - 6 parallel single-connection uploads - āœ… **Tested:** 42,801 files uploaded with 100% success rate --- diff --git a/RELEASE_NOTES_v2.0.md b/RELEASE_NOTES_v2.0.md new file mode 100644 index 0000000..46cc423 --- /dev/null +++ b/RELEASE_NOTES_v2.0.md @@ -0,0 +1,166 @@ +# šŸŽ‰ PS5 Upload Suite v2.0.0 - Feature-Rich Release + +## šŸš€ What's New + +This is a **major feature release** adding 4 powerful new capabilities to the PS5 Upload Suite! + +--- + +## ✨ New Features + +### 1. šŸ“„ Download Files (PS5 → PC) + +Finally! You can now download files from your PS5 back to your PC. + +**How to use:** +- Right-click any file in PS5 Files panel +- Select "ā¬‡ļø Download to PC" +- Choose where to save the file +- Watch the progress with real-time speed tracking + +**Technical Details:** +- Uses sendfile optimization for maximum speed +- Zero-copy transfer on PS5 side +- Same high-speed protocol as uploads +- Full progress tracking + +--- + +### 2. šŸ” File Search + +Quickly find files in large directories without scrolling. + +**How to use:** +- Type in the Search box below Current Path +- Files are filtered in real-time as you type +- Case-insensitive search +- Click "āœ– Clear" to reset + +**Perfect for:** +- Finding specific game saves +- Locating config files +- Searching through large mod folders + +--- + +### 3. ⭐ Favorites/Bookmarks + +Save your frequently used PS5 paths for instant navigation. + +**How to use:** +- Navigate to any path (e.g., `/data/games`) +- Click "⭐ Add" to save it +- Use the Favorites dropdown to quickly jump to saved paths +- Click "šŸ—‘ļø Remove" to delete a favorite + +**Saved paths persist between sessions!** + +--- + +### 4. šŸŽ® Multi-PS5 Support + +Manage multiple PS5 consoles with ease. + +**How to use:** +- Enter a PS5 IP address +- Click "šŸ’¾ Save Profile" and give it a name (e.g., "Living Room PS5") +- Use the Profile dropdown to quickly switch between PS5s +- Click "šŸ—‘ļø Delete Profile" to remove saved profiles + +**Perfect for:** +- Users with multiple PS5 consoles +- Testing on different systems +- Switching between home and friend's PS5 + +--- + +## šŸ”§ Technical Improvements + +### Server-Side (payload) +- Added `CMD_DOWNLOAD_FILE` (0x13) command +- Implemented sendfile-based download handler +- Fixed `LIST_DIR` to return actual file sizes (not 0) +- Zero-copy file transfer for downloads + +### Client-Side +- Added `DownloadFileAsync()` method to Protocol +- Implemented search filtering with `ObservableCollection` +- Added JSON-based profile and favorites persistence +- Custom ComboBox templates for dark theme consistency +- Improved UI responsiveness + +--- + +## šŸ“Š Statistics + +**Lines of Code Added:** ~500+ lines +**New Protocol Commands:** 1 (DOWNLOAD_FILE) +**New UI Elements:** 3 panels (Search, Favorites, Profiles) +**Persistent Storage Files:** 2 (ps5_profiles.json, ps5_favorites.json) + +--- + +## šŸŽØ UI Improvements + +- All ComboBox dropdowns now have proper dark theme +- All buttons show full text without cutoff +- Consistent styling across all new features +- Responsive layout that adapts to content + +--- + +## šŸ“¦ Files Included + +### Server +- `payload/ps5_upload_server.elf` - Updated with download support + +### Client +- `client/bin/Release/net6.0-windows/win-x64/PS5Upload.exe` - Full v2.0 client + +--- + +## ā¬†ļø Upgrading from v1.3.0 + +1. **Replace server payload:** + - Copy new `ps5_upload_server.elf` to `/data/etaHEN/payloads/` + - Reload with elfldr + +2. **Replace client:** + - Close old PS5Upload.exe + - Replace with new version + - Your settings will be preserved + +**Note:** v2.0 creates two new files: +- `ps5_profiles.json` - Saved PS5 profiles +- `ps5_favorites.json` - Saved favorite paths + +--- + +## šŸ› Known Issues + +None reported yet! This is a stable release built on top of the rock-solid v1.3.0 foundation. + +--- + +## šŸ”® Future Features (Not in v2.0) + +Still on the roadmap: +- Disk Space Warning before upload +- Duplicate File Detection +- File Verification (SHA256) +- Resume Interrupted Uploads +- Queue Management (reorder, pause) +- Transfer History +- Scheduled Uploads + +--- + +## šŸ™ Thanks + +Special thanks to the PS5 homebrew community for testing and feedback! + +--- + +**Enjoy the new features!** šŸš€ + +**- Manos** diff --git a/client/App.xaml.cs b/client/App.xaml.cs index 934fbaf..0c739f8 100644 --- a/client/App.xaml.cs +++ b/client/App.xaml.cs @@ -1,8 +1,61 @@ +using System; +using System.IO; +using System.Threading.Tasks; using System.Windows; +using System.Windows.Threading; namespace PS5Upload { public partial class App : Application { + private static readonly string LogFilePath = Path.Combine( + AppDomain.CurrentDomain.BaseDirectory, + $"ps5upload_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}.log"); + + private static readonly object _logLock = new object(); + + public App() + { + // Global exception handlers + this.DispatcherUnhandledException += App_DispatcherUnhandledException; + AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; + TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException; + + LogToFile("=== Application Started ==="); + } + + private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) + { + LogToFile($"DISPATCHER EXCEPTION: {e.Exception}"); + e.Handled = true; // Prevent crash, but log it + + MessageBox.Show($"Error: {e.Exception.Message}\n\nCheck log file: {LogFilePath}", + "PS5 Upload Error", MessageBoxButton.OK, MessageBoxImage.Error); + } + + private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) + { + var ex = e.ExceptionObject as Exception; + LogToFile($"UNHANDLED EXCEPTION: {ex}"); + } + + private void TaskScheduler_UnobservedTaskException(object? sender, UnobservedTaskExceptionEventArgs e) + { + LogToFile($"TASK EXCEPTION: {e.Exception}"); + e.SetObserved(); // Prevent crash + } + + public static void LogToFile(string message) + { + try + { + lock (_logLock) + { + string timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); + File.AppendAllText(LogFilePath, $"[{timestamp}] {message}\n"); + } + } + catch { /* Ignore logging errors */ } + } } } diff --git a/client/MainWindow.xaml b/client/MainWindow.xaml index a35cb34..a6182ba 100644 --- a/client/MainWindow.xaml +++ b/client/MainWindow.xaml @@ -7,6 +7,12 @@ Icon="ps5_logo.png"> + + + + + + + + +