2
0
mirror of https://github.com/9ParsonsB/Pulsar.git synced 2025-04-05 17:39:39 -04:00

28 Commits

Author SHA1 Message Date
Xjph
5bbf2f50de Remove unused variables from catch 2023-03-01 16:31:18 -03:30
F K
3f2f11bdf3
[Framework + Core] Feature: Add support for adding multiple grid items (#105)
For plugin developers: Adds a new method to the IObservatoryCore interface to add multiple grid items in 1 call -- which only invokes the UI thread once (and potentially only scrolls to bottom once) providing a small performance improvement and providing some modest convenience.
2023-03-01 16:22:20 -03:30
F K
7e401adb6f
Handle disposed timer object in ResetTimer() (#104)
I've had this occur a number of times (twice in a row yesterday) where if you receive new records while doing a long read-all, this exception crashes ObsCore.

So may need some further digging, but in the meantime, it won't crash here.
2023-03-01 16:21:23 -03:30
Xjph
eeae99dc2a Migrate to .NET 6 2022-12-04 15:01:56 -03:30
Xjph
62dd6730e8 Handle general exceptions during plugin loading. 2022-10-30 19:16:47 -02:30
Jonathan Miller
342d5af11c
Error handling improvements (#92)
* Consolidate plugin errors into single window.

* Handle error aggregation and loggin inside error reporter.

* Minor logging corrections.

* Error popup tweaking
2022-07-24 15:48:55 -02:30
Jonathan Miller
8de34a141c
Export version fixes (#83)
* 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>
2022-05-21 13:00:47 -02:30
Jonathan Miller
fb45b5c3e2
Export, plugin archive install, and herald cache race condition fixes (#82)
* 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.
2022-05-09 11:11:57 -02:30
F K
ab365cd322
Expose core error logger to plugins and report custom criteria errors (#78)
* 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.
2022-05-03 19:02:31 -02:30
Jonathan Miller
1950d477fd
Herald v2 (#74)
* 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.
2022-04-04 11:58:30 -02:30
F K
fa5c978b34
Revert PluginCore use of event listening for current LogMonitor state (#64)
The order that listeners get notified isn't deterministic and as a result plugins which read the current state from PluginCore during the handling of a state change event may read a stale state resulting in unexpected results. PluginCore now reads a property directly from LogMonitor to avoid such inconsistencies.
2022-03-15 11:14:20 -02:30
F K
4f4ba88878
Add event-based LogMonitor state changes to better handle batch reads (#59)
* 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.
2022-03-03 16:39:49 -03:30
F K
fcf60f6776
For some reason this check failed and resulted in a stack overflow (#52)
Added a second condition to the Observatory.Framework assembly loading check to prevent a stack overflow condition.
2022-01-21 08:16:03 -03:30
F K
701f6f0b1c
Add new Rendering controls for notifications, add missing forwarding (#47)
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.
2021-12-18 17:57:23 -03:30
Xjph
889825275d
New feature: Monitor on start (#42)
* Implement monitor on start

* finish implementation of monitor on start
2021-12-18 12:21:07 -03:30
Xjph
554948534e
observatory herald (#30)
* 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
2021-11-15 10:57:46 -03:30
xjph
f6fe653274 more tweaks for linux building 2021-10-24 19:24:17 -02:30
Xjph
9e9659f71b Added HttpClient to Core interface. 2021-10-24 13:02:37 -02:30
Xjph
41334ae375 feat: wire up core methods for updating and cancelling notifications 2021-10-23 11:19:25 -02:30
Xjph
5159500644 Notification overhaul and update to avaloniaui 0.10.7 2021-10-12 20:45:00 -02:30
Xjph
c883821fb6 voice notifications and settings UI rework 2021-09-04 18:36:03 -02:30
Xjph
78ffcc167b feat: better internal handling for plugin settings 2021-09-04 15:20:52 -02:30
Fred Kuipers
a4ad2fdd7d Fixes to PluginManager for proper Notifier plugin handling
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.
2021-08-10 00:44:14 -04:00
Xjph
2bc47a8647 Remove plugin signature enforcement. 2021-06-08 17:27:30 -02:30
Xjph
bbfcc98b97 Alter assembly loading. 2021-06-06 18:22:01 -02:30
Xjph
2d91474002 Removed unnecessary. Add summaryt for AddGrid Item. Add ClearGrid and ExecuteOnUIThread. 2021-06-06 12:58:32 -02:30
Xjph
6ec420bdb9 Added null check for plugin settings. 2021-06-06 10:34:40 -02:30
Xjph
a5154996ee Add project files. 2021-06-03 22:25:32 -02:30