Commit Graph

890 Commits

Author SHA1 Message Date
jp64k
f289026438 Added game name to disk/device space error messages
Updated disk and device space error messages to show the game name
2026-01-03 05:14:32 +01:00
jp64k
de6b0e4c70 Added download queue space checks with new error messages
Implemented disk and device space validation for the download/install queue with per-game and total queue size checks. The UI displays total queue size and updates available device space after each install. Improved error handling and user prompts for insufficient space.

When adding an entry to the queue, we check:
- Free disk space in the current download directory
- Device free space (if sideloading is enabled)
- Whether the download is already queued
- Total queue size against download directory and device free space to prevent over-queuing

When a download starts (e.g., when resuming downloads after a restart), we recheck disk and device space for that download and allow the user to skip it or clear the queue if not.

Space checks are intentionally lenient. We only block downloads when we're confident the download won't fit. If space is close, users will proceed since they'll receive an error during the actual installation when it fails anyway.
2026-01-03 05:05:43 +01:00
jp64k
debb204719 Improved YouTube search query accuracy
Wrapped the game name in quotes in the YouTube search query to yield more accurate results for VR trailers
2026-01-02 16:09:45 +01:00
jp64k
f80d5f841c Removed dated drag-and-drop label, updated notes display
Removed DragDropLbl label and its related logic, consolidating drag-and-drop tips into the notesRichTextBox with improved styling. Added UpdateReleaseNotes method to handle dynamic notes display and placeholer styling
2026-01-02 15:43:33 +01:00
jp64k
38a1968c42 Refactored gallery view tile rendering for better performance and increased hover effect animation speed
Simplified and unified tile and thumbnail drawing, reduced gallery image filter quality (interpolation) for better performance with negligible visual quality loss while maintaining the best filter quality (HighQualityBicubic) for the currently hovered tile, and adjusted hover and animation constants. Tile borders are now drawn after the image. Removed no longer used FormatSize method
2026-01-02 15:20:30 +01:00
jp64k
b92def0283 Added persistent download queue with resume support
Implemented automatic saving and loading of the download queue, allowing users to resume unfinished downloads after restarting the application. Added methods to persist the queue state, prompting users to ask if they want to resume queued downloads on startup, and updated queue management logic to support resumed downloads
2025-12-31 05:37:47 +01:00
jp64k
62343f8cf6 Implemented minor Copilot changes 2025-12-31 05:11:58 +01:00
jp64k
fdb091cee6 Persist window size, position, state and sort order between sessions
Added functionality to automatically save and restore the main window's position, size, (maximized) state, and sort order for list and gallery views between sessions. Introduced new properties in SettingsManager for window and sort state persistence. Updated MainForm to load and save these settings on startup, close, and sort changes, and added default/fallback behavior. Modified ModernListView to suppress header drawing and interaction during initialization
2025-12-31 04:54:11 +01:00
jp64k
3993e574a8 Replaced dated download queue ListBox with custom ModernQueuePanel
Introduced ModernQueuePanel as a modern control for the download queue, supporting
drag-and-drop reordering, auto-scroll, and entry removal via close buttons (replaced
double-click) in a modernized look. Removed legacy ListBox event handlers and updated
MainForm to use the new panel, synchronizing it with the queue's binding list and
refactored UI logic for queue management and download cancellation
2025-12-31 03:44:46 +01:00
jp64k
fb36826091 Fixed incorrect NEWER THAN LIST logic/behavior for blacklisted apps
Moved increment of newerThanListCount and setting of item.ForeColor outside the blacklist check. Now, only the prompt for upload is skipped for blacklisted packages, while the UI still reflects that a newer version is installed
2025-12-30 22:24:14 +01:00
jp64k
84ddce1423 Synchronized sorting states between list view and gallery view
Introduced shared sorting state logic to maintain consistent sorting order when switching between gallery and list views (game name, last updated, size, popularity, asc and desc)
2025-12-30 22:12:29 +01:00
jp64k
f363550351 Fixed incorrect item selection in gallery view for entries with duplicate package names
Updated GalleryView selection logic to consistently use unique release name (SubItems[ReleaseNameIndex]) instead of non-unique package name, which fixes incorrect item selections in gallery view for entries with duplicate package names
2025-12-30 21:50:47 +01:00
jp64k
02ab0f0e2a Improved timeout handling for ADB connect command and suppressed devices command log spam
Enhanced RunAdbCommandToString to use a 5-second timeout for connect commands, preventing prolonged blocking during startup/initialization when an ADB wireless config exists but fails to connect to the device. Also added a suppressLogging parameter to control 'devices' command output logging, which is used for our quick 'devices' check command that runs every second while no devices are connected
2025-12-30 17:23:00 +01:00
jp64k
5819bc8083 Refactored DnsHelper and added DNS testing for the public config hostname instead of a hardcoded URL
Refactored DnsHelper for maintainability and added automatic DNS testing for the public config hostname after creation/update of vrp-public.json to automatically enable fallback DNS and proxy if system DNS fails for that
2025-12-30 16:54:00 +01:00
Fenopy
4383b9d398 store deviceId in variable instead of line-splitting
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-23 07:06:33 -06:00
jp64k
b3ce3ab214 Adjusted wireless ADB dialog widths to fix layout
Increased width of 'Wireless ADB Options' and 'Wireless ADB Connection' dialogs by 6 pixels each to improve layout centering
2025-12-22 03:47:53 +01:00
jp64k
ae72432aee Improved FlexibleMessageBox button and text placement
Reduced left padding for the title and text labels, reduced right padding of buttons for better alignment, added code to resize the title panel to fix the close button position - https://puu.sh/KFOEG/5c3d72aaee.png
2025-12-22 03:43:48 +01:00
jp64k
5a939d6234 Refactored ADBWirelessToggle and device detection
Replaced message box prompts with custom dialogs for wireless ADB options and connection methods, providing clearer choices for users. Enhanced wireless ADB state detection by verifying actual device connection, and readded old automatic USB setup option as third option for wireless ADB ("Automatic (USB)"). Also refactored CheckForDevice() to use Task.Run/await pattern and optimized battery check
2025-12-22 02:42:34 +01:00
jp64k
e6ce947700 Refactored filter/selection logic, now preserves filter and selection state on game list refresh
Refactored methods to use RefreshGameListAsync() instead of reinitializing the list view, ensuring filter and selection state are preserved after refreshes. Added logic to restore the last selected item by package name in both list and gallery views. Also refactored ModernListView to simplify marquee calculation logic.
2025-12-22 01:25:50 +01:00
jp64k
d24df061df Minor ModernListView.cs cleanup and fixed hovered text disappearing after scroll
Removed MarqueeEnabled and MarqueeOnlyWhenFocused fields and related conditional logic, as they were no longer used. Also fixed hover state updates after scrolling
2025-12-22 00:24:23 +01:00
jp64k
5f4cfc09fe Fixed "&" not being rendered in new list view
Included TextFormatFlags.NoPrefix in text rendering flags for both header and cell drawing to fix & rendering.
2025-12-18 16:11:37 +01:00
jp64k
1de339da75 Updated ModernListView.cs
Changed several public properties and enums in ModernListView to private, removed unused code, reduced text scroll speed (marquee)
2025-12-18 06:09:50 +01:00
jp64k
4f653f2131 Implemented Copilot suggestions 2025-12-18 05:53:52 +01:00
jp64k
3148ddcfa3 Implemented custom ModernListView class, added modern scrollbar to gallery view, reworked list view columns and sorting, added fix to skip 0 MB entries when MR-Fix version exists
Added custom ModernListView class with modern dark theme appearance and refined behavior with smooth text scrolling support. Required a lot of finicking to get the details right. Reworked ListView columns and sorting for size and popularity, including parsing with reformatted GB/MB size and popularity ranking. Updated GalleryView to support new formats and implemented modern scrollbars. Also added logic to skip 0 MB entries when an MR-Fix version of same game exists
2025-12-18 05:44:54 +01:00
Fenopy
ddb503feec Update to handle UTC timestamps
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-17 15:19:44 -06:00
jp64k
1bcfbd132d Updated icon in forms I missed earlier; now reusing existing icon; dropping .exe size from 3,38 MB to 1,03 MB
Updated icon in forms I missed earlier; now reusing existing icon; dropping .exe size from 3,38 MB to 1,03 MB
2025-12-17 22:18:19 +01:00
jp64k
9862a6a8ca Fixed update sorting for gallery view to consider exact date+time (and not just date)
Updated ParseDate to use DateTime.TryParseExact with a specific format handling ' UTC' suffix
2025-12-17 19:43:39 +01:00
jp64k
12c371da84 Fixed gallery view placeholder text alignment for missing thumbnails
Adjusted the rectangle used for placeholder text when a thumbnail is missing to use a stable, non-scaled base thumbnail size to ensure consistent text layout regardless of thumbnail scaling
2025-12-17 05:13:10 +01:00
jp64k
782ead1c1e Remove InstalledVersion column, now showing it unified in single version tab
Removed the InstalledVersion column from the ListView and its designer references. Installed version information is now appended to the Version column text "Version (vs Installed)" when installed, improving clarity and reducing column clutter.
2025-12-17 05:07:08 +01:00
jp64k
e9f77449f0 Added 'Installed Version' column to games list
Introduces a 'Installed' column to the games ListView, displaying the installed version for each game. Updates sorting logic to handle the new column numerically and defines the corresponding index in RCLONE.cs.
2025-12-17 04:51:57 +01:00
jp64k
fd77c4db8b Reworked tile design in game gallery
For a cleaner UI and to allow larger thumbnails, game names are now shown on hover, except for tiles that don't have thumbnails. Adjusted thumbnail padding and corner radius to further increase thumbnail size and keep rounding consistent. Refined positioning of the delete button to align with the new tile layout
2025-12-17 04:18:36 +01:00
jp64k
d9a8d1c460 Fixed trailer player regression
For some reason this fixes trailers sometimes not playing correctly
2025-12-17 02:53:57 +01:00
jp64k
c5b151471a Refactored progress bar to show fractional percentages and improved ETA smoothing
Progress values and callbacks (labels, progressbar) now use float instead of int to reflect fractional percentages for a better / more responsive user experience. Improved ETA display for APK install, OBB copy and ZIP extraction operations by introducing a reusable EtaEstimator class for smoother and more accurate ETA calculations
2025-12-17 02:20:40 +01:00
jp64k
2f843bc458 Refactored game list refresh logic to use existing RefreshGameListAsync() method
Replaced manual list view initialization and checks with a call to the existing RefreshGameListAsync() method, simplifying the refresh logic and ensuring that the game list is properly refreshed when a filter is active and a game is updated (e.g., when installing an already installed game (updating) while in 'update available' view, the game status now correctly changes to reflect that it has been updated)
2025-12-17 00:31:25 +01:00
jp64k
f528520024 Simplified extraction and installation progress labels in inner progress bar
- Removed extraction filenames from progress status label in inner progress bar to keep it clean and simple, and to avoid confusion with OBB file copy operations
- Removed redundant ETA text for install progress in inner progress bar to match the style of other progress labels
- Changed the trailer player.html directory from 'webroot' to 'trailer', shortened YouTube player initialization script, added fs: 0 to hide unnecessary fullscreen toggle, iv_load_policy: 3 to hide video annotations
2025-12-17 00:05:03 +01:00
jp64k
a92d4c0267 Unified DLS+ETA progress labels and implemented ETA tracking for extraction, installation, and copy operations
- Removed separate DLS+ETA labels, unified into a clearer single label
- Repositioned and resized that label slightly to avoid top of label getting cut off
- Added guards to prevent brief progress bar flashes during multi-file downloads
- Added ETA for file extraction, APK installation, and OBB copy operations by tracking elapsed time and calculating a smoothed ETA based on the rate of progress
2025-12-16 22:50:55 +01:00
jp64k
acaea1d243 Fixed UI lag during progress updates
Added throttling to progress and status callbacks during APK installation and OBB copy operations. UI updates are now limited to at most once every 100 ms or when the progress percentage changes, preventing excessive UI thread updates and associated lag.
2025-12-16 21:10:53 +01:00
Fenopy
15f0c1ee72 chore: update proxy handling order
changed setRcloneProxy to default to user's proxy first.
2025-12-15 06:14:03 -06:00
jp64k
44df1666f4 Fixed ampersands (&) not being rendered in selectedGameLabel and rookieStatusLabel 2025-12-15 02:42:43 +01:00
jp64k
6cbfdbe52c Refactored file download logic to use DNS fallback for 7-zip and WebView2 downloads, fixed crash craused by corrupted user.config preventing startup
Refactored all file download logic to use DNS fallback and applied it to 7-zip and WebView2 runtime downloads. Moved WebView2 runtime download logic to GetDependencies and ensures it is downloaded at startup if missing. Added robust handling for corrupted user.config files in Program.cs, including auto-repair and fallback guidance.
2025-12-15 00:07:54 +01:00
jp64k
75d22ab504 Parse proxy settings only when proxy is enabled
Updated the applyButton_Click handler to parse and validate proxy address and port only if the proxy toggle is checked. This prevents unnecessary validation and error messages when the proxy is not enabled
2025-12-14 20:45:13 +01:00
jp64k
0c20841db3 Added efficient Cloudflare DNS fallback with local proxy for RCLONE
Introduced DnsHelper to detect system DNS failures and fall back to Cloudflare (1.1.1.1 / 1.0.0.1) DNS resolving, with caching and helpers for downloads. When fallback is required a lightweight local proxy is started and HTTP_PROXY/HTTPS_PROXY are set for spawned rclone processes so rclone uses the proxy’s DNS resolution; the proxy is cleaned up on exit. This finally resolves the very common ISP DNS blockage issues of users.
2025-12-14 20:25:48 +01:00
jp64k
b33251d98b Moved ShowError_QuotaExceeded() outside of try-catch, updated message, close application after showing the error
Moved quota exceeded check outside of try-catch block so it always runs the check. Updated the error message in ShowError_QuotaExceeded(). The application now exits after showing the error.
2025-12-14 18:45:21 +01:00
jp64k
3ef0652a85 Fixed several error messages being opened behind mainwindow
Updated all FlexibleMessageBox.Show invocations to include Program.form as the parent form. This ensures message boxes are properly parented to the main application window, putting them infront of the main window, instead of behind it.
2025-12-14 16:54:35 +01:00
fenopy
2ced3aa961 Support for HTTP proxy for Rclone (sourced from pr 252) v3.0-beta 2025-12-12 08:19:14 -06:00
Fenopy
0ecb4255e9 Merge pull request #269 from jp64k/RSL-3.0
Added modern progress bar, real-time install/OBB progress updates using AdvancedSharpAdbClient, updated sideload confirmation messages, a new icon based on the VRP server icon, prompt to ask if users want to delete game files after install when enabling sideloading
2025-12-11 17:50:07 -06:00
jp64k
f8dea1e135 Added modern progress bar, real-time install/OBB progress updates using AdvancedSharpAdbClient, updated sideload confirmation messages, and a new icon based on the VRP server icon.
Introduce ModernProgressBar, a custom control with gradient fill, rounded corners, indeterminate animation, and optional status text. Integrated AdvancedSharpAdbClient to provide real-time progress updates for APK installs and OBB copies, updating the UI to reflect the current operation and its progress. Refactored ADB methods to support async progress reporting, updated MainForm to use the new progress bar features, improved user feedback with clearer confirmation messages during and after sideloading, added a new icon based on the VRP server icon and enabled it in the window title bar.
2025-12-11 23:06:49 +01:00
jp64k
f714d2cb92 Added prompt to ask if users want to delete game files after install when enabling sideloading
Added a dialog to ask users if they want to delete game files after install when enabling sideloading from the toggle from the left side navigation. Also moved UpdateStatusLabels() to ensure sideload status labels are already updated as they see the prompt.
2025-12-11 16:01:17 +01:00
fenopy
f3a93afccc qol: add github link to about 2025-12-11 08:48:09 -06:00
fenopy
123fb7261c feat: add firmware version to Device Model Label 2025-12-11 08:33:41 -06:00