- use koanf for preferences management
- merge worker preferences into agent preferences file
- move device creation from preferences to device package
BREAKING CHANGE: Worker preferences are now in the agent preferences file, under a "worker_prefs" section. Any existing custom preferences will need to be manually migrated to this file.
- create separate api package for sending requests to hass api
- create new request types to send registration and event/sensor requests to hass
- validation back in api package
- remove the sensor.Details interface, which was inflexible and unneeded. Replace with an exposed struct Entity which workers can use
- move request/response code out of sensor package and into hass package, which makes more sense
- controllers now have an ID
- remove Start/StopAll controller methods and just use Start/Stop
- alter linux workers to move more code into shared methods
- store D-Bus system/session bus connections in context
- store desktop portal value in context
- store session path in context
- inherit/use logger in context
- create custom reusable object for accessing a D-Bus property with its own get/set methods
- create custom reusable object for calling a method in D-Bus
- sue functional options for setting up a D-Bus watch
- actually ensure a watch is created for each method requested to be watched
- add validation for property, method and watch objects
- rework sensors using D-Bus to take advantage of new objects
- rewrite dbusx package so that methods either act on a particular bus or require a bus passed as a parameter
- don't store D-Bus in context
- define a D-Bus API which stores bus connections which can be retrieved by other functions
- rework the linux controller to store the D-Bus api and pass to sensor/MQTT workers
- rework the linux controller so it can satisfy the agent's SensorWorker and MQTTWorker interfaces
- move most code to represent a device into os-agnostic package
- for os-specific device code, utilise a `*_os.go` file
- generate mqtt device info without generating a new device
- New* worker creation functions now take a context, that can be used as part of initialisation
- in Linux location sensor, check if a client can be created first
- change linux location sensor to satisfy agent Worker interface
- change hass sensor update code to support location as a sensor
- simplify agent sensor updates to merge location and other sensor updates
BREAKING CHANGE: The dbusx package now uses Go
generics for some functions, to combine both
fetching or setting a value or property as the
required type.