* WIP: Grid export and plugin extraction
* Tweak export process
* Check for recursion of the same assembly load.
* Individual screens aren't always primary?
* Wait for cache to be writable
* Export selection only.
* Update built xml docs
* Ignore invalid archives.
* Need to ensure task is started.
* Expose core error logger to plugins and report custom criteria errors
Fixes#77
This adds an error logging method on the IObservatoryCore interface that writes the exception details to ObservatoryCore's central error log (found in `${Documents}/ObservatoryErrorLog.txt`). In addition, added a timestamp to each error log.
Also updates the Explorer to report Custom Criteria file load errors and execution errors to the log. Also updates HeraldNotifier to report CacheIndex.json parse failures to the error log as well.
* Expand debugging/error logging in Herald; cleanup empty mp3 files
Herald crashes if attempting to play 0-byte mp3s so if detected, delete, re-request (empty files can occur in some azure failure cases (ie. out of quota). Trap and log errors in other places in HeraldQueue to avoid hard crashes due to weird and wonderful unexpected stuff.
* Add speech rate setting
* Add volume slider
* New speech manager skeleton
* User API key from resx
* Implement voice list retrieve via new api
* Rewrite to use ObAPI, remove all dependancies
* Use volume setting
* Clean up using statements
* Volume and timing adjustments
* Lookup rate value
* Use numeric rates for tighter spread
* Manage plugin data folder via core interface
* Add check that nullable settings are not null.
* Get file size before it's deleted.
* Improve old settings migration.
* Ignore cache sizes below 1MB
* Re-index orphaned files in cache, purge legacy wav files.
* Call top level error logging for native voice exception.
* Async title and detail requests to remove pause
* Remove NetCoreAudio use of temp files.
* Remove orphan using.