System context pre-reading logic previously assumed the player jumped into the current system in their own ship as a pilot. Arriving docked on their carrier was thus missed and may have resulted in processing more than one systems worth of context (or simply failing to pre-read context).
Manipulating active notifications must be done on the Avalonia UI thread. UpdateNotification and CloseNotification were not properly doing this.
Any plugin attempting to use persistent notifications would have encountered these errors.
NOTE: There is not yet hooks for cleaning up persistent/infinite timeout notifications when the APP is closed.
* WIP: initial commit for observatory herald
* Plugin error handling refactor
* make error window non-modal
* tidy up plugin error handling
* first pass for basic herald functionality
* corrections for linux env
* Use FNV hash directly instead of managing through dictionary/index file
* resolve audio queuing issue, switch to personal NetCoreAudio fork
* merge cleanup
* add enable setting, populate defaults
* framework xml doc update
* Adjust settings, add style selection, replace locale with demonym in dropdown list.
* Test is position is on screen before saving/loading.
* use a default that's actually in the list
* chore: move all observatory repos to core
* only save journal folder on change, don't constantly re-check during monitoring
* chore: monorepo project changes
* chore: monorepo migration
* feat: cosmetic overhaul of native notification popup
* fix: use correct screen default
* feat: move notification test from debug build type to button press
* fix: not debug anymore
* fix: rearrange native notification settings controls
* fix: account for display scaling when positioning notification
* fix: guard against a screen that no longer exists
* fix: safer way to get screens, in case control tree changes
A few changes in preparation for the upcoming Announcer plugin.
1) De-dupe entries in the plugin table in the core settings UI when a plugin implements both Worker and Notifier interfaces.
2) Also add a "Types" column to the plugin table indicating the set of implemented interfaces found.
3) Wrap the pre-reading logic in "Read-all" scope to properly suppress a stampede of notifications (particularly audio ones) when starting the log monitor.
4) Fix the int setting UI. It rendered incorrectly, it didn't get the value from the settings class, nor wrote it back. Also implemented optional value bounding using the new setting attribute (see the related Framework PR).
5) Applied similar fixes to string setting (addressed rendering, write-back although untested).
6) Minor visual fixes (height/vertical alignment) for non-boolean settings to address cut-off/overlapping inputs.
Sorry for the larger PR, but these *should* be all the loose ends before we could consider including Basic Announcer...
Addresses 2 issues:
1) If a single plugin class implemented both the Worker and Notifier interfaces, multiple instances of the class were created, meaning no shared state within the plugin. Now only 1 instance is created.
2) Plugins implementing only Notifier weren't properly loaded.