* chore: Change vscode workspace settings to work with omnisharp
* refactor(.NET): Use connection string builder to init sqlite database
* docs(.NET): Add method documentation to most things that matter
* docs(.NET): Add more docs I forgot to commit apparently
* feat: Add PoC world database structure ^& http listener
* fix: Send a response if VRCX isn't initialized rather than hanging
* feat: Initialize world db schema on startup
* feat: Allow worlds to store data in db through logfile
* use existing current location for worldDB
* Add tooltips
* chore: Make it so vscode can format C# files without prettier
* refactor: Add sqlite-net to (eventually) replace sqlite impl
* refactor: Make use of sqlite-net for world database
* docs: Add todo for fixing some random exception
* refactor: Remove now-unused SQLiteWorld
* refactor: Fix DB init query and change table structure again
* refactor: Add WorldDataRequest, add attributes for camelcase json keys
* Support current user location from API in addition to gameLog
* Change current location check for worldDB
* feat: Take store requests in JSON, identify worlds by GUID on store.
* refactor: Remove unused worldId param from connection key generator
* docs: Add more documentation to the methods for the world database
* fix: Hey wait that's not a primary key
* feat: Add a 10MB data cap for worlds shared across all of their rows.
* fix: Don't calculate size of world date twice when inserting
* refactor: Discard the guid variable since we only check for validity
* docs: Add docs/comments for new data cap functionality
* feat: Implement /getbulk API endpoint
* fix: Correct WorldDB init query typo
* fix: Update data entries properly instead of using 'OR REPLACE'
* refactor: Move endpoint processing to separate methods
* refactor: Add another check for error 503, remove old code
* feat: Add debug capability to /vrcx/getbulk
* fix: Correct the usage of getUser in actuallyGetCurrentLocation
* feat: Add store errors, implement external reading, stop 404ing
* docs: Add docs for new world db funcs
* refactor: Change world db server listen port to 22500
* fix: Use getUser correctly, dumb dumb
* fix: This error set shouldn't be here
* feat: Future-proof api endpoints. Add /status endpoint
---------
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>
* docs: Add json schema for screenshot metadata
* feat(.NET): Add function to open a file and read screenshot metadata to AppApi
* refactor(.NET): Check initial file dialog directory before set
Paranoia is fun
* refactor(.NET): Stop reading entire png files into memory to check 8 bytes
* refactor(.NET): Handle endianness and keyword encoding correctly for screenshots
* docs: Add xmldocs and some comments to parts of the screenshot helper
* screenshot metadata dialog
* screenshot metadata dialog 1
* fix: file dialog open bool not resetting properly
* screenshot metadata dialog 2
* fix: Stop png parser from dying on bad files
Parser would keep reading past a file's IEND chunk, and it finally found one that had junk data past IEND. It died. This fixes that.
It also encapsulates the Read function in a try/catch so VRCX doesn't crash if it fails due to a corrupted file.
* fix: buggy carousel transition animation
---------
Co-authored-by: Teacup <git@teadev.xyz>