While testing, I discovered that plugins that don't yet support sending the Coalescing ID were not mixing well because the default value of the ID is 0 -- which is also a valid body id. If the default is null, receivers can detect the absent value and apply a sensible default (ie. group them where it makes sense).
The new properties are:
* string Sender: The name of the plugin sending the notification.
* string ExtendedDetails: Even more detail than Title and Detail convey. This value will not be spoken nor included in pop-up notifications. However, other notifier plugins may use this value.
* int ColescingId: An id which can be used to correlate multiple notifications together (ie. for sorting/grouping) without depending on arbitrary string values. I recommend reserving -1 for system, 0 .. 1000 for system bodies and anything else is arbitrary and can be agreed upon between Core and Plugin authors, as desired.
While the motivating use is a new notifier plugin I am authoring (my Aggregator plugin, see GitHub), I have tried to make this as general purpose as possible.
I have modified Explorer as an example of usage. After this is merged, I'll follow up with another PR to use this in Botanist as well (I have other changes pending for Botanist; see #120).
Comments welcomed!
* Add file association for .eop, prompt for install dir
* Handle .eop or .aip file passed as arg.
* VS2022 version bump
* Filter neutron stars and black holes from fast spinning criteria.
* Adjustments for new "high value" check
* Refactor herald cache
* Fix element order and namespaces for voice moods.
* Add explicit .Stop() between audio player calls.
* Use nullsafe member access instead of skipping
* Don't queue up a title that's already queued.
* Improve body ordinal handling for explorer speech titles.
* Escape strings being inserted into xml
* Handle flip-flopping JSON type
* Converter for flip-flopping property type
* Use the converter
* Escape characters *before* we wrap it in xml.
* Give Eahlstan his clear button. :D
* Exclude all stars from fast rotation check.
* Close outstanding popup notifications on exit.
* TO DONE
* [Herald] Suppress duplicate notification titles for spoken notifications
If you have notifications from multiple plugins producing notifications with the same title in quick succession (ie. "Body A 1 e" from both Explorer and BioInsights), the title on successive notifications will not be spoken again to save the breath of our friendly Azure speakers.
* Doc update
* Remove unintended member hiding
* Fix export errors when exporting BioInsights data, cleanup
Discovered a couple issues with exporting BioInsights data resulting from using two different types of objects in the data grid; improved error handling as well.
Also cleaned up some old-style read all code.
* Add read-all on launch setting
* Updated framework xml
* Improve high-value body description text
Co-authored-by: Fred Kuipers <mr.fredk@gmail.com>
* Add event-based LogMonitor state changes to better handle batch reads
Pre-reading hackily used read-all to suppress notifications. But that broke some assumptions about what read-all meant. Furthermore, the Core UI told plugins about read-all rather than the log monitor telling them -- which is really what should be telling them.
To address these concerns, LogMonitor now provides an event that both the PluginCore and PluginEventHandler listens to or tracking logging state allowing more granular information about the activities of LogMonitor, including distinguishing between ReadAll and Pre-read batches. Plugins no longer need to track if LogMonitor is in batch-read mode or not -- PluginCore now provides it.
I've also converted all built-in plugins to use the new event-based system. The old system is marked deprecated and will go away once other known contributed plugins have converted to the new system.
* Change LogMonitorState enum to [Flags], drop 'None' state
As requested, and did associated simplifications and cleanup that followed.
Plugins authors can now optionally specify what ways their notifications are rendered (subject, of course, to user preferences/settings). The default is to render notifications in all available channels. Examples:
- Show native pop-up window only (ie. no voice/plugin notifiers)
- Disallow other plugin notifiers
This does not support selection of notifier plugins.
Furthermore, persistent notification updates were not previously being forwarded to anything but the native popup notifier. Now plugins and native voice are also supported (subject to user preferences) and respect the new rendering controls added here. There is currently no concept of closing notifications for the native voice or plugin-based notifiers.
* 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