The configuration system was quite fragile and too dependent on everything, this fix#812 .
The changes:
The file configuration is now entirely independent from the internal configuration state.
The file configuration is versioned (current version is 1).
Every configuration elements are now reactive properties that the emulator can register on to handle initialization and configuration changes.
The configuration system is now in Ryujinx.Common to be accessible on every projects.
Discord integration is now independent from the UI and can be reloaded.
The primary controller is now configurable at runtime (NOTE: the UI currently doesn't have any options to configure real controller).
The logger is entirely reloadable.
You can now hotplug your controller when the emulator is running.
The logger now takes name for every LogTarget to make them removable at runtime.
The logger now always add the default "console" target to avoid loosing early init logs.
The configuration system now generates a default file configuration if it's missing or too new.
General system stability improvements to enhance the user's experience
* controller image changes depending on the selected controller type
the new controller image assets are temporary until i get new ones
* Game list scans subdirs for games
* Key file existence check
* Only shows Program NCAs in Application list
* Change shown GUI columns without restarting
* Sort by column if you click on the column header
Columns are sorted as text so there are inaccuracies on some columns
* Fix sort on Time Played, Last Played and File Size columns
* Add ability to designate favourite games #1
TODO:
- Make fav games persistent
- Fix invisible check marks due to theme
* Add ability to designate favourite games #2
Also removed default theme
* Added a Windows specific build condition and a Linux bug fix
* bugfix
* Load metadata from JSONs
* Temp bug fix for MacOS
* lil clean up
* requested changes
* Misc fixes
* edited schema and config
* Show the TitleID of games on the title bar
* gui column config option have names
* Async loading of game list
* bugfix and cleanup
* thog's requested changes
* requested changes and cleanup
still need to fix the gtk seizure
* Fix issue where an ExeFS as a NSP didn't show up in the application list
* Minor fixes
* catch glib unhandled exceptions
* Make sure to do UI manipulation in the main thread
* Print path of invalid files
* Ac_k's requested changes
* Return of the dark theme
* move AboutInfo struct to another file
* sort usings
* changes
- gdkchan's requested changes that have been marked resolved
- made some structs internal as they aren't used outside of the GUI
- renamed Ryujinx.UI to Ryujinx.Ui to fit naming convention and folder structure
- fixed bug where controller type dropdown box is stretched
* Fix typos
* Remove unneeded using statements
* Enforce var style more
* Remove redundant qualifiers
* Fix some indentation
* Disable naming warnings on files with external enum names
* Fix build
* Mass find & replace for comments with no spacing
* Standardize todo capitalization and for/if spacing
* Logging: Refactor log targets into Ryujinx.Common
* Logger: Implement JSON Log Target
* Logger: Optimize Console/File logging targets
Implement a simple ObjectPool to pool up StringBuilders to avoid causing excessive GCing of gen1/2 items when large amounts of log entries are being generated.
We can also pre-determine the async overflow action at initialization time, allowing for an easy optimization in the message enqueue function, avoiding a number of comparisons.
* Logger: Implement LogFormatters
* Config: Refactor configuration file and loading
* Config: Rename to .jsonc to avoid highlighting issues in VSC and GitHub
* Resolve style nits
* Config: Resolve incorrect default key binding
* Config: Also update key binding default in schema
* Tidy up namespace imports
* Config: Update CONFIG.md to reflect new Config file