Add "friends in instance" to invite dialog
Change XS notification height depending on text length
Attempt to fetch userId's for users in current instance
Add user dialog friend history tooltip
* Optimized search screenshots by metadata
* feat: Screenshot metadata search bar
* fix: Reset search when selecting a file manually
* refactor: Re-do the whole search thing. Add number of results to dialog when searching
* fix: Add check & error for null metadata
* fix: Add sourceFile to error obj on return
* fix: Fix screenshot file dialog not sending path back to JS
* fix: Stop lfs parsing from dying if a value doesn't exist
* fix: Fix and optimize FileStream reading of metadata for searches
* fix: Reset search data and revert to normal when user clears out search box
* refactor: Remove/optimize some old screenshot helper stuff
- Use FileStream in ReadPNGResolution
- Limit the FindChunkIndex search range used when writing metadata
- Remove old ReadPNGDescription, just use filestream version now
* fix: Reset metadata search state if a file is added manually
* feat: Move viewer popover dialog to the fullscreen image viewer
* refactor: Change how parsing errors are handled... again
* refactor: Let the search carousel loop around
* fix: Re-do legacy parsing /wo JObject. Fix legacy instance ids/pos.
Also adds further docs to the legacy parsing for the various formats
* feat: Add persistent metadata cache for search
* Clean up
* fix: Fix viewer dying
sourceFile wasn't being included for vrcx pics
* refactor: Cache the state of files with no metadata
This is so we're not constantly re-processing these files with no metadata on every first search after a restart; These files won't magically gain metadata and this could cause a lot of hitching for someone that had potentially thousands of screenshots before using VRCX.
* Screenshot viewer loading
---------
Co-authored-by: Nekromateion <43814053+Nekromateion@users.noreply.github.com>
Co-authored-by: Natsumi <cmcooper123@hotmail.com>
* fix(.NET): Stop CheckGameRunning from force checking processes
I'm not really sure what I was thinking when I did that the way I did; They are not supposed to force check if they're closed after the first time...That's what the monitor is for.
* feat(.NET): Add optional child process culling, clean up applauncher
Add an AppApi method to set applauncher settings Enabled/KillChildrenOnExit
Refactor repeated applauncher event code, move into methods
* refactor: Move the pug code for every tab into its own file
* refactor: Add PoC mixins to settings.pug ^& add comments for navigation
Some proof of concept replacements of the categories, switches and a radio group in the General settings seection.
Also added comments for each header-separated section for marginally better navigation of the file.
* refactor: Move the login page to its own file
* fix(.NET): Correct wrong variable being set in SetAppLauncherSettings
* fix(.NET): Remove redundant/exception causing process refresh in monitor
* refactor(.NET): Allow launcher to be disabled; Disabled by default.
* refactor: Change screenshot helper default to true
* feat: Expose new app launcher settings, add new settings category
Translation keys added/removed:
+ view.settings.advanced.advanced.app_launcher.header
+ view.settings.advanced.advanced.app_launcher.folder_tooltip
+ view.settings.advanced.advanced.app_launcher.enable
+ view.settings.advanced.advanced.app_launcher.auto_close
- view.settings.advanced.advanced.auto_launch
- view.settings.advanced.advanced.auto_launch_tooltip
* Add GPU Fix and Udon Exception Logging options, unload favorites tab when not in use
* Fix GPUFix typo
* Fix GPUFix typo 1
* Add logging for AVPro streams without usharp videoplayer
* Lint
---------
Co-authored-by: Natsumi <cmcooper123@hotmail.com>
* refactor: Change OpenImageFolder to use a winapi call
It will open the given file in any existing explorer instances instead of opening a new shell every time, handle longer paths, and work with third-party filesystem viewers with winapi hooks(well, this one).
* feat: Add an automatic app launcher
The launcer will automatically launch apps in the 'startup' folder under the VRCX appdata folder when VRChat has started, and close them when VRChat dies(or is closed).
* refactor: Add new class for monitoring VRC processes
This replaces the old AppApi functionality that would poll all processes twice to grab the status of both VRChat and vrserver.exe every... *checks app.js* 500ms.
It also raises events for when a monitored process is started/closed, mainly for the new AppLauncher feature, which is now using this class instead of monitoring vrchat itself.
* refactor: Add tooltip for launch folder button
* docs: Add some notes on potential issues with Process.HasExited
* Change CheckGameRunning from polling to events
---------
Co-authored-by: Teacup <git@teadev.xyz>