Commit Graph

3589 Commits

Author SHA1 Message Date
Fabio Manganiello 2701f69d17
[#287] Migrated `github` from a backend to a runnable plugin.
Closes: #287
2023-12-30 16:28:12 +01:00
Fabio Manganiello a2a07afc05
[UI] Better default scrollbar width on Webkit.
continuous-integration/drone/push Build is passing Details
2023-12-30 13:41:45 +01:00
Fabio Manganiello 0fb1035331
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-12-30 12:38:57 +00:00
Fabio Manganiello 12a043d67e
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-12-30 03:39:44 +00:00
Fabio Manganiello 57737b1b72
[Entities UI] Don't disable/set loading=true on properties during initial refresh.
continuous-integration/drone/push Build is passing Details
2023-12-30 04:42:51 +01:00
Fabio Manganiello 5bec01a389
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-12-29 23:04:08 +00:00
Fabio Manganiello 2c429e9003
[Music UI] Fixed alignment of buttons in the playlist header.
continuous-integration/drone/push Build is passing Details
2023-12-30 00:06:56 +01:00
Fabio Manganiello 2575d6cbc5
[Extensions UI] Fix `hljs.highlight` call to match new API. 2023-12-30 00:04:31 +01:00
Fabio Manganiello 7e58044804
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-12-29 03:04:26 +00:00
Fabio Manganiello 171ed7f743
[Entities UI] Better refresh logic.
continuous-integration/drone/push Build is passing Details
2023-12-29 03:45:17 +01:00
Fabio Manganiello 2546a582d2
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-12-25 12:44:31 +00:00
Fabio Manganiello ce1e8513d4 [music UI] Several UI improvements 2023-12-25 12:43:00 +00:00
Fabio Manganiello be54469df0 [music UI] Fixed search form. 2023-12-25 12:43:00 +00:00
Fabio Manganiello 0de322fb95
[assistant.google] Propagate plugin name as a string to events.
continuous-integration/drone/push Build is passing Details
This also makes it easier to programmatically stop conversations on
`SpeechRecognizedEvent` with a matched phrase.
2023-12-21 00:28:27 +01:00
Fabio Manganiello 199b42584f
Updated reference configuration sample for `alarm`.
continuous-integration/drone/push Build is passing Details
2023-12-18 14:05:35 +01:00
Fabio Manganiello b107496fbd
[Automatic] Updated UI files
continuous-integration/drone/push Build was killed Details
2023-12-18 12:56:41 +00:00
Fabio Manganiello 9cad27335d
[UI] Attribute sort.
continuous-integration/drone/push Build was killed Details
2023-12-18 13:53:09 +01:00
Fabio Manganiello cfc7a5a6a0
[alarm] Added `media_repeat` configuration.
continuous-integration/drone/push Build is failing Details
2023-12-18 13:46:45 +01:00
Fabio Manganiello 52fd64a162
[alarm] Added `dismiss_interval` configuration. 2023-12-18 03:01:27 +01:00
Fabio Manganiello 250858fe99
[Alarm UI] Added snooze/dismiss modal when alarm is running. 2023-12-18 01:36:58 +01:00
Fabio Manganiello aff02e0732
[alarm] Include `type='alarm'` in `Alarm.to_dict()`.
This is for compatibility with other backend/frontend components who
expect valid entities on events or responses, and hence may break if
`type` is not specified.
2023-12-18 01:13:46 +01:00
Fabio Manganiello 29f65371d8
[Alarm UI] Support for adding/removing alarms. 2023-12-18 00:12:16 +01:00
Fabio Manganiello e617a9fe82
[alarm] Added `alarm.delete`. 2023-12-18 00:05:34 +01:00
Fabio Manganiello b7423e1c34
Added `AlarmEditor` component. 2023-12-17 17:53:38 +01:00
Fabio Manganiello 430a111303
[alarm] Better default actions inference in `alarm.edit`. 2023-12-17 17:53:08 +01:00
Fabio Manganiello b0feb8ed8f
[UI] Fixed regex match for initSelectedPanel. 2023-12-17 17:52:43 +01:00
Fabio Manganiello 9d456281a6
[Entities UI] Removed unrequired z-index on header. 2023-12-17 17:52:15 +01:00
Fabio Manganiello 5972c728a4
[Chore] Upgraded `hljs.highlight` API.
The old API, (lang, code, ...args), is now deprecated.
2023-12-16 23:49:25 +01:00
Fabio Manganiello b916c98b70
[ProcedureEditor] Emit `input` upon action changes. 2023-12-16 23:29:57 +01:00
Fabio Manganiello 1bd2361a3d
[TimeInterval] Refresh value on `mounted`. 2023-12-16 23:27:22 +01:00
Fabio Manganiello d4543c2fb7
Added `ProcedureEditor` component. 2023-12-16 19:03:46 +01:00
Fabio Manganiello 07a144aadc
[ActionTile] Support for drag and drop. 2023-12-16 19:00:04 +01:00
Fabio Manganiello 837007132d
[FloatingButton] Better default colors. 2023-12-16 18:59:30 +01:00
Fabio Manganiello 3bc27a505f
[UI] setUrlArgs should remove args when value == null. 2023-12-16 18:58:31 +01:00
Fabio Manganiello 065f7d74a5
[ActionTile] Better hover style. 2023-12-16 14:23:46 +01:00
Fabio Manganiello 63767cb87c
[UI] Added `ActionTile` component. 2023-12-16 14:14:34 +01:00
Fabio Manganiello 7fcffe899e
[ActionEditor] Support for action save/input events. 2023-12-16 14:13:11 +01:00
Fabio Manganiello f9ba4564e7
[Tabs UI] Force height to `$tab-height`. 2023-12-16 14:12:30 +01:00
Fabio Manganiello 028f48ed49
[Autocomplete UI] Better handling of `blur` events. 2023-12-16 14:09:04 +01:00
Fabio Manganiello 1dfbe0c12d
Ability to specify a custom initial action for the `ActionEditor`. 2023-12-14 22:22:10 +01:00
Fabio Manganiello 8bbafd2f7d
Better logic on the UI to parse the current URL fragment arguments. 2023-12-13 21:56:34 +01:00
Fabio Manganiello 9beb10c373
Extracted `ActionEditor` from the `Execute` plugin.
So it can be reused in other components that need to handle actions.
2023-12-12 23:33:16 +01:00
Fabio Manganiello 4e85087c0f
Added `AlarmEditor` component to `Alarm`. 2023-12-12 22:52:11 +01:00
Fabio Manganiello d4f6d174c8
Added `FileSelector` UI component. 2023-12-12 21:13:55 +01:00
Fabio Manganiello bac06e9e7b
Added `TimeInterval` component. 2023-12-12 00:05:46 +01:00
Fabio Manganiello 6edb8c8318
[#340] s/datetime.fromisoformat/dateutil.parser.isoparse/
We may receive JavaScript timestamps with non-standard `Z` suffix too.
2023-12-11 22:24:55 +01:00
Fabio Manganiello 6e7c5def2f
`CronEditor` should contain the raw cron expression and a copy button. 2023-12-11 22:18:57 +01:00
Fabio Manganiello 00694f4e10
`CopyButton` events should have a `.prevent` clause. 2023-12-11 22:18:17 +01:00
Fabio Manganiello 61ef48119f
Apply default input rules to `time` and `datetime-local` elements. 2023-12-11 22:17:47 +01:00
Fabio Manganiello 627bb66957
Added `CronEditor` component. 2023-12-11 00:25:24 +01:00
Fabio Manganiello 894faaad1e
[#340] Force a refresh via `alarm.status` when `Alarm` view loads. 2023-12-10 21:53:19 +01:00
Fabio Manganiello b4be56ec2c
[#340] Added `condition_type` field to alarm objects. 2023-12-10 21:52:50 +01:00
Fabio Manganiello e6e4396e49
Enhanced `get_default_media_plugin` to filter by video/audio plugins. 2023-12-10 21:50:53 +01:00
Fabio Manganiello 03c167d6b7
[#340] Added `Alarm.is_cron` property. 2023-12-10 20:58:13 +01:00
Fabio Manganiello 2d8f6102c1
[#340] Added `alarm.edit` action. 2023-12-10 20:39:06 +01:00
Fabio Manganiello 8ddd9879f2
[#340] Alarm model enhancements.
- Allow initialization of alarm actions from `Procedure` objects too.

- Force `state=WAITING` when an alarm is disabled.
2023-12-10 17:56:47 +01:00
Fabio Manganiello 686085750f
[#340] Added configuration snippet for the new `alarm` integration. 2023-12-10 15:45:36 +01:00
Fabio Manganiello dfa0727289
[#340] Added `alarm` UI panel. 2023-12-10 15:33:19 +01:00
Fabio Manganiello 62054e83cc
Remaining entity modal style rules moved from `Entities` to `EntityModal`. 2023-12-10 15:32:42 +01:00
Fabio Manganiello 42574d054a
[#340] Ironed out some bugs in the `alarm` integration.
- The alarm ID should be randomly generated - auto-increment IDs are
  subject to race conditions when alarms are created in separate
  processes.

- Clean up alarms that are not static and have been removed from the db.

- Better alarm shut down detection logic.
2023-12-10 15:30:19 +01:00
Fabio Manganiello ca57d3d7b3
[#340] Initial implementation of the alarm entities UI. 2023-12-09 20:33:11 +01:00
Fabio Manganiello f27e7bb7e2
[#340] Better state management for alarms.
- Added `AlarmEnabledEvent` and `AlarmDisabledEvent`.
- Added `snooze_interval` configurable both at plugin level and alarm
  level.
2023-12-09 17:12:20 +01:00
Fabio Manganiello 34e2a59285
Added optional `id` attribute to `ToggleSwitch`. 2023-12-09 16:12:08 +01:00
Fabio Manganiello 4b578c38c8
[#340] Better state management for alarms. 2023-12-09 14:25:18 +01:00
Fabio Manganiello 9d5c755188
[#340] Alarm integration improvements.
- Emit `EntityDeleteEvent` when an alarm is expired and removed so
  clients can properly synchronize their state.

- `croniter.get_next()` should be timezone-aware.
2023-12-09 13:33:42 +01:00
Fabio Manganiello fcb6b621ab
[#340] Added persistence of alarm entities. 2023-12-09 01:25:12 +01:00
Fabio Manganiello 3ffaaa0eb9
Added `Procedure.to_dict` method.
Also, LINT+black for the `procedure` module.
2023-12-09 01:23:36 +01:00
Fabio Manganiello a6d6fd4067
`Message` objects enhancements.
- Support smart JSON serialization of `Message` objects.
- Added `Message.to_dict` method.
2023-12-09 01:20:20 +01:00
Fabio Manganiello 5ad1a62293
[#340] Merged `alarm` backend into the `alarm` plugin.
Closes: #340
2023-12-06 19:23:19 +01:00
Fabio Manganiello 2670d40094
Added `get_default_media_plugin` utility. 2023-12-06 01:31:05 +01:00
Fabio Manganiello 680de865c4
Minor docstring fix. 2023-12-04 03:09:02 +01:00
Fabio Manganiello 5823dd0e21
[#292] Converted `backend.log.http` to a runnable plugin.
continuous-integration/drone/push Build is passing Details
Closes: #292
2023-12-04 03:03:21 +01:00
Fabio Manganiello 1843ab224b
[#289] Converted `backend.file.monitor` into a runnable plugin.
Closes: #289
2023-12-04 03:03:20 +01:00
Fabio Manganiello d484a34c00
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-12-03 23:34:57 +00:00
Fabio Manganiello d048752184
[#301] Exposing hosts as entities in the `ping` plugin.
continuous-integration/drone/push Build was killed Details
Closes: #301
2023-12-04 00:36:45 +01:00
Fabio Manganiello 3bb7c02572
[#301] Merged `ping` backend and plugin.
Also, removed `ping` response types.
2023-11-24 02:06:53 +01:00
Fabio Manganiello 71ccffa698
[weather.buienradar] Implemented forecast support. 2023-11-23 01:35:58 +01:00
Fabio Manganiello b969afb1cf
Added support for weather forecast events and entities. 2023-11-23 01:35:58 +01:00
Fabio Manganiello 841a28066b
Added support for generic kwargs to `publish_entities`. 2023-11-23 01:35:57 +01:00
Fabio Manganiello ca7c89949b
Only react on `NewWeatherConditionEvent` if `plugin_name` is compatible. 2023-11-23 01:35:57 +01:00
Fabio Manganiello aca71c6bc7 [wallabag] Improved OAuth flow integration.
continuous-integration/drone/push Build is passing Details
If the user provided `username` and `password` in the plugin
configuration, then we should use those credentials to refresh the OAuth
token when expired.
2023-11-22 11:38:00 +01:00
Fabio Manganiello 7bb15b0a03
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-11-20 02:08:35 +00:00
Fabio Manganiello a0d8c522a2
[#308] Finalized `weather` integrations migration.
continuous-integration/drone/push Build was killed Details
- Migrated `weather.buienradar` integration.
- Removed last leftovers of the previous weather backends and responses.

Closes: #308
2023-11-20 03:10:00 +01:00
Fabio Manganiello 2dac98c56e
More rst fixes. 2023-11-20 03:09:59 +01:00
Fabio Manganiello a798cfa387
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-11-20 01:42:12 +00:00
Fabio Manganiello 80be79f5e8
Fixed link format.
continuous-integration/drone/push Build is failing Details
2023-11-20 02:43:18 +01:00
Fabio Manganiello bc8730d6f0
[#308] Removed `weather` backend. 2023-11-20 01:54:10 +01:00
Fabio Manganiello b8a4b9e4c5
Implemented support for weather entities. 2023-11-20 01:46:01 +01:00
Fabio Manganiello bf8f31545a
Fixed alignment of entity icon in modal. 2023-11-19 22:33:19 +01:00
Fabio Manganiello b800899859
[#308] Refactored `weather.openweathermap` plugin. 2023-11-19 00:10:10 +01:00
Fabio Manganiello 6108cbb621
Added `Config.get_device_id()` classmethod. 2023-11-18 23:04:19 +01:00
Fabio Manganiello eec2908cc2
Removed DarkSky integration.
The API has gone and it's been merged into Apple Weather.
2023-11-18 21:45:47 +01:00
Fabio Manganiello 674c1036c5
Fixed some plugin usages of `self._bus`.
continuous-integration/drone/push Build is passing Details
Now `_bus` is a common property shared by all the plugins, so it
shouldn't be overloaded.
2023-11-18 16:58:55 +01:00
Fabio Manganiello 8817581061
Removed `-U` option from pip command when installing deps.
continuous-integration/drone/push Build is passing Details
We don't need to forcefully upgrade packages that don't need to be
upgraded.
2023-11-18 16:07:16 +01:00
Fabio Manganiello 869ef38364
Removed explicit `numpy` pip dependency in `assistant.google`.
continuous-integration/drone/push Build is passing Details
It will be installed by the other dependencies anyway.
2023-11-18 16:01:24 +01:00
Fabio Manganiello fdaff32cd0
Fixed docstring for `chromecast.status`.
continuous-integration/drone/push Build is failing Details
2023-11-18 14:17:17 +01:00
Fabio Manganiello 1a777c6276
Removed Todoist backend and migrated responses to schemas.
continuous-integration/drone/push Build is passing Details
The Todoist Websocket interface is no longer working properly, and I'm
sick of reverse engineering it.

Closes: #305
2023-11-18 10:16:48 +01:00
Fabio Manganiello c2f53b7771
Added `_bus` property on `Plugin`. 2023-11-18 10:13:35 +01:00
Fabio Manganiello f12af08e73
Minor return type fix. 2023-11-17 22:30:30 +01:00
Fabio Manganiello 0f9614506b
[trello] Updated procedure to retrieve the frontend cloud token. 2023-11-17 10:28:27 +01:00
Fabio Manganiello c919cf0cd8
[trello] (Almost) complete plugin rewrite.
continuous-integration/drone/push Build is passing Details
- Merged `trello` plugin and backend into a single plugin.

- Removed legacy `Response` objects, replaced with data classes and
  schemas.

- Fixed the Websocket connection flow to reflect the new authentication
  protocol.

Closes: #307
2023-11-17 02:07:04 +01:00
Fabio Manganiello 39b4483401
Fixed `joystick` manifest.
continuous-integration/drone/push Build is passing Details
2023-11-16 22:08:00 +01:00
Fabio Manganiello 7bb08bca07
[joystick] Rewritten `joystick` integration as a plugin.
continuous-integration/drone/push Build is passing Details
And removed legacy `joystick*` backends and `inputs` plugin.

Closes: #290
2023-11-16 21:43:56 +01:00
Fabio Manganiello 5e629990e6
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-11-15 02:04:50 +00:00
Fabio Manganiello d617443af6
[YouTube] Added subscriptions+channels support.
continuous-integration/drone/push Build is failing Details
Closes: #337
2023-11-15 03:05:58 +01:00
Fabio Manganiello 9ed7026aaf
[media UI] Propagate free text filter to all the views. 2023-11-15 03:05:58 +01:00
Fabio Manganiello ae017516c4
[YouTube UI] Support playlist navigation in the media nav. 2023-11-15 03:05:57 +01:00
Fabio Manganiello 4853f51c8b
[YouTube] Added (read-only) playlists support. 2023-11-15 03:05:57 +01:00
Fabio Manganiello b491f81cda
[media UI] Added loading spin overlay upon play. 2023-11-15 03:05:57 +01:00
Fabio Manganiello 9e5728f8ba
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-11-13 01:39:51 +00:00
Fabio Manganiello 96e69811fe
[#337] Initial YouTube UI with feed support.
continuous-integration/drone/push Build is failing Details
2023-11-13 02:40:50 +01:00
Fabio Manganiello f425e95e7e
[media UI] Show track image if available on desktop+ size. 2023-11-13 02:40:50 +01:00
Fabio Manganiello 60fb7bba5f
[media UI] Added support for generic media providers. 2023-11-13 02:40:50 +01:00
Fabio Manganiello be28965d84
[`youtube`] Added `youtube.get_feed` action. 2023-11-13 02:40:50 +01:00
Fabio Manganiello b63579b81c
[UI] Fixed some glitches of the Dropdown component. 2023-11-13 02:40:49 +01:00
Fabio Manganiello f6c752c80e
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-11-12 14:59:23 +00:00
Fabio Manganiello 50922cf149
[media UI] Fixed player selector style after Dropdown component changes.
continuous-integration/drone/push Build is failing Details
2023-11-12 15:55:28 +01:00
Fabio Manganiello ca72e22820
[UI] Proxy `/media/*` requests to upstream when Vue is in debug mode. 2023-11-12 15:55:03 +01:00
Fabio Manganiello d4b519a572
[media UI] Wrapped the file browser into a `MediaBrowser` component.
This will make it easier to support multiple media collection providers
other than local files.
2023-11-12 15:54:27 +01:00
Fabio Manganiello 6dfe2324c1
[UI] Added navigation crumbs to the file browser. 2023-11-12 15:53:46 +01:00
Fabio Manganiello 724f625963
[`media.chromecast`] Skip errors on `cast.wait`.
It may be that the cast thread has been recycled and it's already been
awaited. It's safe to skip the error in these cases.
2023-11-12 15:52:31 +01:00
Fabio Manganiello e416a70658
[UI] (Re)-added required `logo-256x256.png` image. 2023-11-12 15:52:07 +01:00
Fabio Manganiello cad36b7911
[UI] Watch the `connected` flag for changes to update the Nav indicator. 2023-11-12 14:00:18 +01:00
Fabio Manganiello 60b5f235a7
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-11-12 02:08:23 +00:00
Fabio Manganiello 1f321c32dc
[`media.chromecast`] Full plugin rewrite.
continuous-integration/drone/push Build is failing Details
2023-11-12 03:08:54 +01:00
Fabio Manganiello 20aeb0b72e
[`system`] Some versions of `cpuinfo` may return cache sizes in human-readable format.
continuous-integration/drone/push Build is passing Details
2023-11-10 21:55:41 +01:00
Fabio Manganiello 9a090d1b46
[`system`] Cache sizes can also be float, not necessarily int.
continuous-integration/drone/push Build is passing Details
2023-11-10 21:30:56 +01:00
snyk-bot d54970765e
fix: upgrade vue from 3.3.4 to 3.3.6
Snyk has created this PR to upgrade vue from 3.3.4 to 3.3.6.

See this package in npm:
https://www.npmjs.com/package/vue

See this project in Snyk:
https://app.snyk.io/org/blacklight/project/96bfd125-5816-4d9e-83c6-94d1569ab0f1?utm_source=github&utm_medium=referral&page=upgrade-pr
2023-11-10 14:35:37 +00:00
Fabio Manganiello 3d62069775
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-11-10 01:48:45 +00:00
Fabio Manganiello ceae310901
[`snapcast`] Merged backend logic into the plugin.
Closes: #283
2023-11-10 02:48:07 +01:00
Fabio Manganiello 6c3edb73f9
[`music.snapcast`] Fixed message serialization issue.
Closes: #338
2023-11-09 22:46:54 +01:00
Fabio Manganiello 1ec42e11fc
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-11-09 01:46:44 +00:00
Fabio Manganiello 52ee614ec4
[`media`] Added logic to parse local media metadata.
continuous-integration/drone/push Build is failing Details
2023-11-09 02:47:34 +01:00
Fabio Manganiello a83f4729a6
[UI] Extracted `grid` into `layout.scss`. 2023-11-09 02:47:34 +01:00
Fabio Manganiello 4814c56a2d
[`media` UI] Added resolution to media info. 2023-11-09 02:47:34 +01:00
Fabio Manganiello 90a9684404
[`media` UI] Added extra rating fields to the media info component. 2023-11-09 02:47:33 +01:00
Fabio Manganiello cd635ea69e
[`torrent`] Fixed duration and image for TV series results. 2023-11-09 02:47:33 +01:00
Fabio Manganiello e66ca105d7
[`jellyfin`] Added `duration` field to video results. 2023-11-09 02:47:33 +01:00
Fabio Manganiello d1b721dba5
[`torrent`] Added `image` to search results. 2023-11-09 02:47:33 +01:00
Fabio Manganiello eb7a96ee94
[`youtube`] Added more metadata fields to search results. 2023-11-09 02:47:32 +01:00
Fabio Manganiello d7093d18c5
[`media` UI] Major redesign of the search results. 2023-11-09 02:47:32 +01:00
Fabio Manganiello f7a25a478d
[UI] Dropdown component rewrite.
Dropdown components should always be rendered under the root element, or
nasty effects caused by absolute parenting may end up hiding dropdown
elements regardless of their `z-index`.

The new approach uses a single `<DropdownContainer>` element in the
main `App` file. Each `<Dropdown>` component will push updates to the
bus whenever it triggers open/close events, and the dropdown component
to be rendered will be pushed upstream and rendered in the root element.
2023-11-09 02:47:32 +01:00
Fabio Manganiello fafc1747d6
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-11-06 23:45:02 +00:00
Fabio Manganiello 3d2dc22ed3
[`media` UI] Improved media UI.
continuous-integration/drone/push Build was killed Details
2023-11-07 00:45:45 +01:00
Fabio Manganiello e7bd61e0d4
Black/LINT for Jellyfin plugin. 2023-11-07 00:45:45 +01:00
Fabio Manganiello a94ddd3f05
[`torrent`] duration * 60 for results returned by PopcornTime API. 2023-11-07 00:45:44 +01:00
Fabio Manganiello 1d41df51e7
[`media`] Extended current track with ytdl metadata if available. 2023-11-07 00:45:44 +01:00
Fabio Manganiello a939cb648c
[`media` UI] Extracted `PlayPauseButton` into its own component. 2023-11-07 00:45:44 +01:00
Fabio Manganiello 7889846cd6
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-11-06 01:29:16 +00:00
Fabio Manganiello 2caa171c6d
[`media` UI] Fixed alignment of the controls right handle.
continuous-integration/drone/push Build is failing Details
2023-11-06 02:25:54 +01:00
Fabio Manganiello 27da2becd7
[`media`] Added `media.get_info` action.
It combines the `-j` and `-g` options of ytdl* to get both the stream
URL and the track metadata.
2023-11-06 02:25:35 +01:00
Fabio Manganiello e0a9ccca24
[`media UI`] Component refactor.
- Fixed style of the floating control extensions panel.
- Extracted `ProgressBar` and `ExtraControls` into separate components.
2023-11-06 01:54:12 +01:00
Fabio Manganiello 8e8bd7fb9f
[`media UI`] Fixing/refactoring media UI.
- Fixed broken elements in the media control view.
- Fixed volume bar.
2023-11-05 23:45:37 +01:00
Fabio Manganiello 6411688e65
[`youtube`] Don't fail if some items in the response have missing attrs. 2023-11-05 22:12:21 +01:00
snyk-bot 9814292a2e
fix: upgrade vue-router from 4.2.4 to 4.2.5
Snyk has created this PR to upgrade vue-router from 4.2.4 to 4.2.5.

See this package in npm:
https://www.npmjs.com/package/vue-router

See this project in Snyk:
https://app.snyk.io/org/blacklight/project/96bfd125-5816-4d9e-83c6-94d1569ab0f1?utm_source=github&utm_medium=referral&page=upgrade-pr
2023-11-05 15:30:06 +00:00
snyk-bot eff126052d
fix: upgrade core-js from 3.32.0 to 3.33.0
Snyk has created this PR to upgrade core-js from 3.32.0 to 3.33.0.

See this package in npm:
https://www.npmjs.com/package/core-js

See this project in Snyk:
https://app.snyk.io/org/blacklight/project/96bfd125-5816-4d9e-83c6-94d1569ab0f1?utm_source=github&utm_medium=referral&page=upgrade-pr
2023-11-05 15:30:02 +00:00
snyk-bot 3ddac09412
fix: upgrade sass from 1.65.1 to 1.69.3
Snyk has created this PR to upgrade sass from 1.65.1 to 1.69.3.

See this package in npm:
https://www.npmjs.com/package/sass

See this project in Snyk:
https://app.snyk.io/org/blacklight/project/96bfd125-5816-4d9e-83c6-94d1569ab0f1?utm_source=github&utm_medium=referral&page=upgrade-pr
2023-11-05 15:29:57 +00:00
Fabio Manganiello daa93f5994
[`media` UI] Fixed style of the Play URL modal. 2023-11-05 12:19:36 +01:00
Fabio Manganiello 71bca662a1
`media.play` should support anything supported by a yt_dlp extractor.
continuous-integration/drone/push Build is passing Details
2023-11-05 02:40:38 +01:00
Fabio Manganiello e45fb9c8ac
Major rewrite of the `media` routes.
continuous-integration/drone/push Build is passing Details
- Streaming and media subtitles endpoints moved from Flask to Tornado
  routes - the old Flask streaming route no longer worked behind a
  Tornado server.

- Storing the streaming state on Redis rather than in a local variable,
  or different Tornado processes may end up with different copies of the
  registry.

Closes: #336
2023-11-05 01:33:36 +01:00
Fabio Manganiello 0e2738d849
Added `_on_error` handler to `StreamingRoute`. 2023-11-05 01:03:40 +01:00
Fabio Manganiello 7c780e6650
Refactored `utils.bus.send_request`.
It should return the response output and raise an error if the response
has errors.
2023-11-04 16:22:27 +01:00
Fabio Manganiello f7fe844296
Black/LINT pass for media handler routes. 2023-11-04 16:13:52 +01:00
Fabio Manganiello 11c3b7820d
[`torrent`] Create `download_dir` if it doesn't exist. 2023-11-04 15:48:05 +01:00
Fabio Manganiello 07e7f06c7a
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-11-04 11:12:51 +00:00
Fabio Manganiello 2b12984c81
[`youtube`] Full plugin rewrite.
continuous-integration/drone/push Build is failing Details
Instead of relying on the official Google YouTube API (limited, subject
to breaking changes with short/no notice depending on Google's strategy
against scrapers, and with an initial setup that has a high cost), we'll
just stick to Piped from now on.

It's free, it doesn't require API keys, it's unlikely to change, it's
not subject to Google's hostile practices against developers, and
anybody can run an instance.
2023-11-04 12:11:44 +01:00
Fabio Manganiello 44d4ae2a96
[`media`] Made the `youtube-dl` executable configurable.
`youtube-dl` is mostly dead and there are several forks available, thus
we need to give the user the ability to pick which `youtube-dl`
executable fork they want to use.

Among these, `yt-dlp` is probably the most maintained today and it's
also included in many default repos, so it's been added as an extra
requirement for all the media plugins.

Closes: #268
2023-11-04 11:57:09 +01:00
Fabio Manganiello 5478b90288
[Media UI] Start/stop streaming use the configured media plugin.
The base `media` plugin is abstract, hence the `Media` panel needs to
pass the current media plugin to the `Utils` mixins so it can pick the
right action.
2023-11-04 11:54:44 +01:00
Fabio Manganiello b4bf30945a
[`media`] Black/LINT for `MediaPlugin`. 2023-11-04 00:50:08 +01:00
Fabio Manganiello efdb63443d
Renamed the `youtube` plugin.
From `google.youtube` to `youtube`.
2023-11-04 00:07:29 +01:00
Fabio Manganiello 9ac25a7627
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-11-03 21:24:49 +00:00
Fabio Manganiello 3b335723a9
Merge pull request #387 from BlackLight/snyk-upgrade-7f1672a9074c3d844aa231ad5ba0e90d
continuous-integration/drone/push Build is failing Details
[Snyk] Upgrade core-js from 3.23.4 to 3.31.1
2023-11-03 22:18:22 +01:00
Fabio Manganiello 8acb4156e0
Merge branch 'master' into snyk-upgrade-7f1672a9074c3d844aa231ad5ba0e90d 2023-11-03 22:11:01 +01:00
Fabio Manganiello 664ca7f9b5
Merge branch 'master' into snyk-upgrade-ae486550d733dccfaf3fab04d0756007 2023-11-03 22:07:35 +01:00
Fabio Manganiello 2bb7285c8a
Merge pull request #392 from BlackLight/snyk-fix-ccc0cd6dbbb455def4c5435b5511ae11
[Snyk] Security upgrade axios from 0.21.4 to 1.6.0
2023-11-03 22:06:22 +01:00
Fabio Manganiello 10ec4d39ea
Merge pull request #389 from BlackLight/snyk-upgrade-9420343b82254b8e287940baaf3881aa
[Snyk] Upgrade sass from 1.64.2 to 1.65.1
2023-11-03 22:06:03 +01:00
Fabio Manganiello f5af85ee65
Merge pull request #390 from BlackLight/dependabot/npm_and_yarn/platypush/backend/http/webapp/babel/traverse-7.23.2
Bump @babel/traverse from 7.22.8 to 7.23.2 in /platypush/backend/http/webapp
2023-11-03 22:03:12 +01:00
Fabio Manganiello f6952f1198
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-11-03 20:56:12 +00:00
Fabio Manganiello 170e37945e [UI] Make sure that a `Modal` never overflows its parent. 2023-11-03 20:54:46 +00:00
Fabio Manganiello 4c5366849d [`torrent`] Updated plugin.
- The default PopcornTime API host has changed, as popcorn-time.ga is no
  longer available.

- The iMDb API now requires a paid tier even for a basic query. The
  official iMDb API layer (and the API key requirement) has thus been
  replaced with a dear ol' scraping of the frontend endpoint.

- Pass of Black/LINT.
2023-11-03 20:54:46 +00:00
Fabio Manganiello 35571b8d13 [UI] Set `max-width` for the media info modal.
This modal can grow very large depending on the size of the media
metadata, thus it's wise to keep its width in check.
2023-11-03 20:54:46 +00:00
Fabio Manganiello 96f2a8f8fc [UI] Set a base `z-index` for the root content canvas.
This allows loading spinners, modals and other components with a real
fullscreen background to stretch over the required space, without being
covered by the navigator or other sibling components.

This also requires the collapsed navigator to have a 1px margin-right,
or its separation border won't be visible.
2023-11-03 20:54:46 +00:00
Fabio Manganiello 266ee3cadf Expose `run` on the base package level.
This enables a syntax like:

```
from platypush import run

run('application.restart')
```
2023-11-03 20:54:46 +00:00
Fabio Manganiello 5e2973dd5f [UI] Removed `<tt>` tag. 2023-11-03 20:54:46 +00:00
Fabio Manganiello ba5d505c9b [`youtube`] Black/LINT pass. 2023-11-03 20:54:46 +00:00
Fabio Manganiello f6cb1fa4a7 Added `utils.get_default_downloads_dir`. 2023-11-03 20:54:46 +00:00
Fabio Manganiello 0e29e770fb Updated sample config snippet for `tts.mimic3`. 2023-11-01 02:30:25 +00:00
Fabio Manganiello d9c4634ce8 [`tts.mimic3`] Plugin rewrite.
The plugin now leverages the `sound` plugin for playback, like all other
`tts` plugins now do, instead of an external `media` plugin.

This also removes the need for the `/tts/mimic3/say` endpoint.
2023-10-31 00:44:05 +00:00
Fabio Manganiello f960ec4bf4 [`sound`] Plugin refactor.
- Added `input_format`/`output_format` options to both input and output
  audio streams.

- Replaced the previous (confusing) occurrences of `ffmpeg_format` and
  `format`.

- Added custom `dtype` option for `sound.play`.

- Added `join` flag (default: false) to `sound.play` to wait for the
  playback to finish.
2023-10-31 00:44:05 +00:00
Fabio Manganiello d5514d7f27 Added `utils.is_debug_enabled`. 2023-10-31 00:44:05 +00:00
Fabio Manganiello ef3b1d20f2 Updated `MediaPlugin` documentation snippet. 2023-10-31 00:44:05 +00:00
Fabio Manganiello 0cbd0a94d6 tts` plugins should leverage `sound`, not an external media player. 2023-10-31 00:44:05 +00:00
Fabio Manganiello 72b2625425 Updated `tts` plugin dependencies, as they now leverage the `sound` plugin. 2023-10-31 00:44:05 +00:00
Fabio Manganiello 68c73fa181 [`tts.mimic3`] Added timeout to `requests.post` proxy. 2023-10-31 00:44:05 +00:00
snyk-bot c9ac3e624f
fix: platypush/backend/http/webapp/package.json & platypush/backend/http/webapp/package-lock.json to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-AXIOS-6032459
2023-10-27 14:35:27 +00:00
Fabio Manganiello 42912581f9 [Fix] Always initialize `AssistantPlugin._conversation_start_sound`. 2023-10-23 21:30:49 +00:00
Fabio Manganiello 23e53f13f0 Removed/commented references to `numpy.typing`.
That module isn't available yet on the numpy version installed on Debian
`oldstable`.
2023-10-23 20:23:57 +00:00
Fabio Manganiello fc869bf5db [Fix] sounddevice arguments fix.
Different versions of the `sounddevice` dependency may or may not return
the `index` parameter when querying the available sound devices.

Thus, the code should be ready for both cases.
2023-10-23 20:11:14 +00:00
Fabio Manganiello cea3055369 Indent pre- and post-install shell scripts in docs. 2023-10-23 15:48:09 +00:00
Fabio Manganiello 6d694f02b4
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-10-23 14:04:25 +00:00
Fabio Manganiello a005958317
[Assistant] Added `assistant` entity type.
continuous-integration/drone/push Build is passing Details
2023-10-23 16:02:05 +02:00
Fabio Manganiello fd26f7fef3
[UI Nav] Fixed position of the connected status dot. 2023-10-23 15:57:47 +02:00
Fabio Manganiello 5c22271e88
[UI] Expose the `connected` flag on the root element level. 2023-10-23 15:03:36 +02:00
Fabio Manganiello 4c0e3a16b6
Removed Alexa/AVS integration.
The integration was based on my old fork of the AVS service, which is no
longer functional given the changes the the Amazon's backend side.

A new `avs-device-sdk` is now available, but it seems that it requires
lengthy compilation processes which are RaspberryPi-specific.

Further investigation is needed for a new Alexa plugin - see #334.
2023-10-23 00:23:10 +02:00
Fabio Manganiello fb017a8b35
[`assistant.google`] Added doc on how to configure audio devices. 2023-10-22 22:49:41 +02:00
Fabio Manganiello 2c8b06e471
Remove Snowboy integration.
It hurts to see it go, as I really believed in this project.

But the website of the project went away in 2020, the Github project
hasn't seen any activity since 2021, and the fork that is supposed to be
used as a replacement for training .pmdl models hasn't been updated
since 2021 - and it only supports Python 2 on Ubuntu 16.04 or 18.04.

One day I may dedicate some efforts to bring Snowboy back to life, but
until then it's definitely not in a state where it's usable for a
Platypush integration.
2023-10-22 22:33:22 +02:00
Fabio Manganiello 645e8c8f77
Added updated configuration snippet for `assistant.google` plugin. 2023-10-22 21:53:15 +02:00
Fabio Manganiello b46c00f015
Removed deprecated `google.assistant.pushtotalk` plugin.
It only existed as a back-compatibility layer with armv6, since there
was no build of the assistant library that worked on Raspberry Pi Zero.

But that API layer has been discontinued by Google and it's no longer
functional, so only the `assistant.google` integration (on x86_64 and
armv7) is currently supported.
2023-10-22 19:57:55 +02:00
Fabio Manganiello cce6c4c5ad
[#284] Merged `assistant.google` plugin and backend.
This removes the deprecated `assistant.google` backend and also adds a
new `conversation_start_sound` parameter.
2023-10-22 19:55:11 +02:00
Fabio Manganiello e24438980a
[`sound`] Better logic for default sound device auto-detection.
continuous-integration/drone/push Build is passing Details
2023-10-22 18:07:25 +02:00
Fabio Manganiello 4d582bb6bc
Ensure that the application always terminates on Ctrl+C.
continuous-integration/drone/push Build is passing Details
2023-10-22 02:33:15 +02:00
Fabio Manganiello f75a2159c7
[platyvenv] Add the venv bin directory to the PATH.
After creating the virtual environment, we should add `<VENV_DIR>/bin`
to the `PATH` variable, so any next `python`/`pip` commands will be
executed in the new environment.
2023-10-22 02:28:31 +02:00
Fabio Manganiello a909dc5f0f
[Fix] The base per-OS requirements filename is always lowercase. 2023-10-22 01:45:23 +02:00
Fabio Manganiello e65eef34d3
[`application`] `application.install` should redirect stderr->stdout. 2023-10-22 01:44:39 +02:00
Fabio Manganiello 8b5871af0e
[Fix] `platyvenv` should also execute the `before` and `after` blocks.
Before this fix, `platyvenv`, unlike `platydock`, didn't take into
account any extra before/after installation commands that individual
integrations may instruct to run in their manifest files.
2023-10-22 01:41:19 +02:00
Fabio Manganiello 02049030d0
`paho` module added to automocks. 2023-10-21 19:55:50 +02:00
Fabio Manganiello 4883f49b19
Removed unused `travisci` events. 2023-10-21 19:15:34 +02:00
Fabio Manganiello cd87cc3e43
Minor docstring fixes. 2023-10-21 18:08:29 +02:00
Fabio Manganiello 8634572c34
Small docstring fix. 2023-10-20 01:41:30 +02:00
Fabio Manganiello 0eae6fd48d
Misc dependencies and mock fixes.
continuous-integration/drone/push Build is passing Details
- `iputils` should be an explicit system dependency for `ping`.
  Some minimal systems (like some Docker images) may not have the `ping`
  command installed out of the box.

- `hid` and `marshmallow_dataclass` should be among the auto-mocked
  modules.
2023-10-20 01:02:35 +02:00
Fabio Manganiello ed2a56de42
`paho.mqtt` should also be added to the mock modules
continuous-integration/drone/push Build is passing Details
2023-10-20 00:00:07 +02:00
Fabio Manganiello e1fc38e014
[Automatic] Updated UI files
continuous-integration/drone/push Build is failing Details
2023-10-19 17:52:56 +00:00
Fabio Manganiello 2c37596478
Updated UI files
continuous-integration/drone/push Build is failing Details
2023-10-19 19:52:50 +02:00
dependabot[bot] 569db13a9b
Bump @babel/traverse in /platypush/backend/http/webapp
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.22.8 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-19 11:30:24 +00:00
Fabio Manganiello 4c6d966038 [Doc fix] Fixed indent in the documentation of the `application.install` action.
continuous-integration/drone/push Build is passing Details
2023-10-19 12:13:08 +02:00
Fabio Manganiello 7eaf8dbdc0
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-10-18 22:53:48 +00:00
Fabio Manganiello 38c5172316
[UI] Show the connected/disconnected status in the `Nav` icon.
continuous-integration/drone/push Build is passing Details
2023-10-19 00:33:17 +02:00
Fabio Manganiello f3c5c2fdfa
[Extensions UI] Added `RestartButton` to the `Install` tab.
It should be possible to easily restart the service after installing the
dependencies for a new integration.
2023-10-18 23:52:49 +02:00
Fabio Manganiello b724e80ee2
[Settings UI] Added `Stop` and `Restart` application buttons. 2023-10-18 23:45:46 +02:00
Fabio Manganiello 2a76a6baa6
[Extensions UI] Added current config to extension panel.
If an extension is configured and enabled, then the UI will now include
a tick next to its name and the currently loaded configuration in the
`Configuration` tab.
2023-10-18 22:51:30 +02:00
Fabio Manganiello f0255549c8
[`utils`] Added `utils.to_yaml` action. 2023-10-18 22:50:52 +02:00
Fabio Manganiello c7acc03c8f
[`inspect`] Added `get_enabled_plugins` and `get_enabled_backends` actions. 2023-10-18 22:10:32 +02:00
Fabio Manganiello c05d887551
[`application`] Added `application.install` action.
continuous-integration/drone/push Build is passing Details
It can be used to programmatically install extensions.
2023-10-18 19:33:00 +02:00
Fabio Manganiello e2e349a2ad
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-10-18 01:01:06 +00:00
Fabio Manganiello 922297bf58
[Extensions UI] Support for initializing an extension from URL.
continuous-integration/drone/push Build was killed Details
2023-10-18 03:00:54 +02:00
Fabio Manganiello 137855b4fc
[Entities UI] Fixed collapse toggling logic. 2023-10-18 03:00:54 +02:00
Fabio Manganiello 26b912fae4
[Execute UI]
- If an action is passed over the URL, then initialize the UI with it.

- Added link from the actions back to their plugins.
2023-10-18 03:00:54 +02:00
Fabio Manganiello e5d84242bb
[Extensions UI] Action URLs now point to the `Execute` panel. 2023-10-18 03:00:53 +02:00
Fabio Manganiello 6f01c35a0f
[UI] Added utilities to get and set args on the URL fragment. 2023-10-18 03:00:53 +02:00
Fabio Manganiello a30c07fbb5
[Execute UI] Make sure that the list of arguments doesn't overflow. 2023-10-18 03:00:53 +02:00
Fabio Manganiello 0c54c8f885
[UI] Refresh the loaded panel when the URL fragment changes. 2023-10-18 03:00:53 +02:00
Fabio Manganiello 6289eb47ab
[Extensions UI] Added `Actions` and `Events` sections to `Doc`. 2023-10-18 03:00:53 +02:00
Fabio Manganiello 6383030e96
[Extensions UI] Added notifications in case of install errors. 2023-10-18 03:00:52 +02:00
Fabio Manganiello 3107df5eba
[UI Nav] Moved `Extensions` panel from the plugins list to the footer. 2023-10-18 03:00:52 +02:00
Fabio Manganiello 81e99a0e22
[`shell`] Better buffering for the output sent to websockets. 2023-10-18 03:00:52 +02:00
Fabio Manganiello a652bd9df8
[Extensions UI] Install extensions deps from the UI.
- Added `Install` button
- Added interactive output panel
2023-10-18 03:00:52 +02:00
Fabio Manganiello 033317e0a7
[Extensions UI] Passing `config_file` to the configuration tab. 2023-10-18 03:00:51 +02:00
Fabio Manganiello 66cba233e5
[`config`] Added `config.get_config_file` action. 2023-10-18 03:00:51 +02:00
Fabio Manganiello 20a2203e7e
[Shell plugin] Added support for async output over websockets. 2023-10-18 03:00:51 +02:00
Fabio Manganiello 2806e943c3
[Extensions UI] Added `Install` tab. 2023-10-18 03:00:51 +02:00
Fabio Manganiello e40a74f11c
Added `install_cmds` to the JSON representation of a manifest. 2023-10-18 03:00:50 +02:00
Fabio Manganiello 9769520e88
[UI] Use `.min.css` file for the Highlight.js styles. 2023-10-18 03:00:50 +02:00
Fabio Manganiello 3366732fa8
[UI] Expand `Tab` width on mobile. 2023-10-18 03:00:50 +02:00
Fabio Manganiello 12f7b190b9
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-10-16 00:30:42 +00:00
Fabio Manganiello 99e98f70f4
[Integrations UI] Added configuration tab.
continuous-integration/drone/push Build is passing Details
2023-10-16 02:30:30 +02:00
Fabio Manganiello b19725c72c
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-10-15 23:18:08 +00:00
Fabio Manganiello 398d64c53f
[Integrations UI] Added new `Integrations` panel.
continuous-integration/drone/push Build is passing Details
2023-10-16 01:16:10 +02:00
Fabio Manganiello 0055acad9d
[UI] Fixed `Autocomplete` behaviour on empty filter. 2023-10-16 01:12:56 +02:00
Fabio Manganiello c88a9da3e6
[UI] Refactored layout classes. 2023-10-16 01:12:05 +02:00
Fabio Manganiello d1afb88b80
[Reflection] Expand RST extensions from object docstrings too. 2023-10-16 00:21:49 +02:00
Fabio Manganiello 0fe1c2768b
[Fix] Some minor docstring indentation fixes. 2023-10-16 00:20:39 +02:00
Fabio Manganiello e242b2134e
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-10-14 12:38:25 +00:00
Fabio Manganiello 3cfd72b649
[UI Nav] Ensure that `entities` and `execute` tabs are always on top.
continuous-integration/drone/push Build is passing Details
2023-10-14 14:38:08 +02:00
Fabio Manganiello 6d53a3f80f
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-10-14 12:09:13 +00:00
Fabio Manganiello a3643c285e
[UI] A friendlier representation of an integration's name.
continuous-integration/drone/push Build is passing Details
2023-10-14 14:02:17 +02:00
Fabio Manganiello 0aecb50590
[Entities UI] Don't hide variables with null values.
Otherwise, the `variables` panel will still appear, but empty, and
offering no way of actually removing or resetting those variables.
2023-10-14 14:02:17 +02:00
Fabio Manganiello 01c7d230f1
[Entities UI] Added `Expand`/`Collapse` and `Hide` actions to groups.
Also, replaced all the deprecated `::v-deep` SCSS notations with
`:deep`.
2023-10-14 14:02:17 +02:00
Fabio Manganiello dbe19042bc
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-10-13 21:13:00 +00:00
Fabio Manganiello 891e05a219
[Execute UI] Added syntax highlight to JSON and shell snippets.
continuous-integration/drone/push Build is passing Details
2023-10-13 23:12:04 +02:00
Fabio Manganiello 8b9ac59167
`parse_numpy` should also catch `AttributeError`.
continuous-integration/drone/push Build is passing Details
2023-10-12 03:24:03 +02:00
Fabio Manganiello 12f38281e1
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2023-10-12 00:58:53 +00:00
Fabio Manganiello e382ad7650 Invert `@ensure_initialized` and `@action` annotations.
Otherwise, we won't be able to access the wrapped function from the
inspection logic.
2023-10-12 00:57:31 +00:00
Fabio Manganiello 0a13b4605e
[Execute panel] Procedures merged into actions.
continuous-integration/drone/push Build is passing Details
Plus, a last big refactor/redesign for the panel's components.
2023-10-12 02:49:51 +02:00
Fabio Manganiello e760f8e23a
[Execute panel] Introduced a common `Response` component.
continuous-integration/drone/push Build is passing Details
2023-10-11 16:57:04 +02:00
Fabio Manganiello b47e729012
[Execute panel] Added cURL snippet modal.
continuous-integration/drone/push Build is passing Details
2023-10-11 16:38:38 +02:00
Fabio Manganiello fc21e9740b
[Execute panel] Better rendering of responses and errors.
continuous-integration/drone/push Build is failing Details
2023-10-11 15:28:49 +02:00
Fabio Manganiello 21820bb185
Big refactor of the `Execute` panel.
continuous-integration/drone/push Build is failing Details
2023-10-11 14:31:46 +02:00
Fabio Manganiello 1b6e9b4df9
Fixed a broken docstring reference. 2023-10-10 22:18:36 +02:00
Fabio Manganiello ff07623803
Auto-focus the first parameter after selecting an action. 2023-10-10 21:31:14 +02:00
Fabio Manganiello 07f0535504
Migrated `Execute` panel to the new `Autocomplete` widget. 2023-10-10 21:13:54 +02:00
Fabio Manganiello a717235453
Added `autofocus` support to `Autocomplete` element. 2023-10-10 20:51:09 +02:00
Fabio Manganiello 923eb7cadb
`Autocomplete` is now its own component. 2023-10-10 18:42:41 +02:00
Fabio Manganiello f6bf9438b9
Several improvements for the `Execute` panel. 2023-10-10 01:45:35 +02:00
Fabio Manganiello 434855ffdd
A better logic to process relative references in docstrings. 2023-10-10 01:35:37 +02:00
Fabio Manganiello 5726c6985f
Added utility function to get the defining class of a method. 2023-10-10 01:35:01 +02:00
Fabio Manganiello 2af304f478
Replaced radio buttons on the `Execute` panel with buttons. 2023-10-10 00:40:20 +02:00
Fabio Manganiello 84efef710e
Added `Tabs` and `Tab` UI elements. 2023-10-10 00:39:27 +02:00
Fabio Manganiello 0c818d3fe0
`.. schema::` JSON arguments should be comma-separated. 2023-10-10 00:38:23 +02:00
Fabio Manganiello b225b056b0
`ParseContext` should also process `kwonlyargs`. 2023-10-10 00:37:08 +02:00
Fabio Manganiello 52e353dc14
Expose the wrapped function in `@action`.
Added a `wrapped` "hidden" parameter to the function returned by the
`@action` decorator.

We need this to access the underlying decorated function when e.g. we
need to access its specs or decorators.
2023-10-09 22:35:08 +02:00
Fabio Manganiello 1e93af86f4
Fixed some broken docstring references.
continuous-integration/drone/push Build is passing Details
2023-10-09 01:33:45 +02:00
Fabio Manganiello 53bdcb9604
A major rewrite of the `inspect` plugin.
- The `inspect` plugin and the Sphinx inspection extensions now use the
  same underlying logic.

- Moved all the common inspection logic under
  `platypush.common.reflection`.

- Faster scanning of the available integrations and components through a
  pool of threads.

- Added `doc_url` parameters.

- Migrated events and responses metadata scanning logic.

- Now expanding some custom Sphinx tag instead of returning errors when
  running outside of the Sphinx context - it includes `:class:`,
  `:meth:` and `.. schema::`.
2023-10-09 01:33:45 +02:00
Fabio Manganiello 9acd71944c
Skip numpy types serialization errors on Message.Encoder. 2023-10-09 01:33:45 +02:00
Fabio Manganiello e5a5ac5ffb
Added `doc_url` parameter to integration metadata. 2023-10-09 01:33:45 +02:00
Fabio Manganiello d872835093
New API to check if a table class exists before defining it.
- Check if it's part of the metadata through a function call rather than
  checking `Base.metadata` in every single module.

- Make it possible to override them (mostly for doc generation logic
  that needs to be able to import those classes).

- Make it possible to extend them.
2023-10-09 01:33:44 +02:00
Fabio Manganiello 608844ca0c
[WIP] Large refactor of the inspection plugin and models. 2023-10-09 01:33:44 +02:00
Fabio Manganiello 841643f3ff
Added `cachedir` to configuration. 2023-10-09 01:33:44 +02:00
Fabio Manganiello 40557f5d5d
Replaced one more occurrence of `<type> | None` syntax. 2023-10-09 01:33:44 +02:00
Fabio Manganiello 4da3c13976
First WIP commit for the new Integrations panel. 2023-10-09 01:33:44 +02:00
Fabio Manganiello 4d52fd35b9
Skip `None` responses in the RSS plugin.
continuous-integration/drone/push Build is passing Details
2023-10-04 22:08:11 +02:00
Fabio Manganiello 40d3ad1150
Removed `<type> | None` type hints.
continuous-integration/drone/push Build is passing Details
They break on Python < 3.10.
2023-10-03 01:15:13 +02:00
Fabio Manganiello 3086dd86fc
LINT+Black+stability fixes for some plugins that hadn't been touched in a while.
continuous-integration/drone/push Build is passing Details
- media.mplayer
- media.omxplayer
- media.vlc
- music.mpd
- music.snapcast
2023-10-01 22:55:06 +02:00
Fabio Manganiello 2aefc4e5c8
Several improvements for the Google integrations.
1. Improved documentation. Every plugin now reports the exact steps to
   get the integration up and running with the right API scopes.

2. All Google plugins now have a standard process to get (and reuse) the
   client secret. Except for PubSub, Translate and Maps (which have
   their own flows), all the Google plugins now read the client secrets
   from `<WORKDIR>/credentials/google/client_secret.json` by default.

3. Black/LINT for some of those plugins, which hadn't been touched in a
   while.

4. The interface to pass API scopes is now leaner. It's now possible to
   pass a scope directly as e.g. `calendar.readonly` rather than
   `https://www.googleapis.com/auth/calendar.readonly`.

5. Improved the logic to retrieve the right scope tokens file. If e.g.
   an integration requires the role `A`, and a credentials file exists
   for the roles `A` and `B`, then this file will be used rather than
   prompting the user to authenticate again.
2023-10-01 15:37:20 +02:00
Fabio Manganiello 5ca3757834
A more readable configuration for the `calendar` plugin.
The old type configuration
(`platypush.plugins.calendar.name.CalendarNamePlugin`) is a bit clunky.

Instead, since the type will always be a plugin, we should encourage
the use of `calendar.name` directly to identify the type.
2023-10-01 01:09:15 +02:00
Fabio Manganiello 966a6ce29e
httplib2 should be an explicit dependency for Google integrations.
Plus, some misc LINT/Black chores.
2023-10-01 00:52:59 +02:00
Fabio Manganiello a7bb81553c
Regex fix.
continuous-integration/drone/push Build is passing Details
2023-09-30 15:11:09 +02:00
Fabio Manganiello 9e489bb5cf
Propagate the default/required properties of a parameter upon merge.
continuous-integration/drone/push Build is passing Details
2023-09-30 14:57:11 +02:00
Fabio Manganiello 1732bfa82c
Fixed _default_docstring regex. 2023-09-30 14:36:08 +02:00
Fabio Manganiello 532f5479b3
Added full YAML example for `chat.irc` configuration. 2023-09-30 14:34:54 +02:00
Fabio Manganiello ecffbf29bf
Skip vararg/varkw parameters from the config snippet.
continuous-integration/drone/push Build is passing Details
2023-09-30 13:53:33 +02:00
Fabio Manganiello 4f5ccda353
Better documentation for the `calendar` plugin. 2023-09-30 13:31:41 +02:00
Fabio Manganiello c82f7bbfbe
Ignore the default docstring text for __init__.
If no docstring is specified for a constructor, Python usually pre-fills
a standard text - "Initialize self. See help(type(self))".

We don't need this default text in our plugins documentation.
2023-09-30 13:29:49 +02:00
Fabio Manganiello 15d06fa5c2
Improved docstring parser logic.
continuous-integration/drone/push Build is failing Details
2023-09-30 12:35:31 +02:00
Fabio Manganiello 343972b520
New `IntegrationMetadata` generic util class.
continuous-integration/drone/push Build is passing Details
This object is in charge of parsing all the metadata of a
plugin/backend.
2023-09-30 02:28:20 +02:00
Fabio Manganiello 905d6632e0
Misc documentation improvements. 2023-09-29 18:09:15 +02:00
Fabio Manganiello 0a3ec4b9f1
Merge branch 'master' into 311/auto-generate-deps-docs 2023-09-28 01:25:29 +02:00
Fabio Manganiello b76f141b61
Catch response write errors in the MQTT callback.
continuous-integration/drone/push Build is passing Details
If the client that forwarded the request is no longer available (either
because an exception or a timeout was raised) then its I/O buffer and
event loop may be closed.

In this case, the response callback should handle and report the
exception, and still set the event, so that any other threads waiting
for the response can move on.
2023-09-27 11:23:55 +02:00
Fabio Manganiello ca7f042ccc
We shouldn't call dateutil.parser if t has already been deserialized to a datetime. 2023-09-27 11:20:10 +02:00
Fabio Manganiello c311987741
Removed `typing.Final` from some of the most commonly used modules.
continuous-integration/drone/push Build is passing Details
`typing.Final` is not defined on Python < 3.8.
2023-09-26 23:50:10 +02:00
Fabio Manganiello 9298f52443
Moved `BluetoothPlugin` to `__init__.py`.
continuous-integration/drone/push Build is passing Details
This is for consistency with other plugins, that all have their main
plugin class definition inside of `__init__.py`.
2023-09-24 19:21:53 +02:00
Fabio Manganiello c3337ccc6c
[#311] Docs deps autogen sphinx plugin.
continuous-integration/drone/push Build is passing Details
Added an `add_dependencies` plugin to the Sphinx build process that
parses the manifest files of the scanned backends and plugins and
automatically generates the documentation for the required dependencies
and triggered events.

This means that those dependencies are no longer required to be listed
in the docstring of the class itself.

Also in this commit:

- Black/LINT for some integrations that hadn't been touched in a long
  time.

- Deleted some leftovers from previous refactors (deprecated
  `backend.mqtt`, `backend.zwave.mqtt`, `backend.http.request.rss`).

- Deleted deprecated `inotify` backend - replaced by `file.monitor` (see
  #289).
2023-09-24 17:00:08 +02:00
Fabio Manganiello 059f7a4b11 Merge branch 'master' into 316/rpm-support
continuous-integration/drone/push Build is passing Details
2023-09-23 16:21:48 +02:00
Fabio Manganiello 2b981f6b68
Added python-croniter dependency to Fedora.
Plus, some clean up of the variables on .drone.yaml.
2023-09-23 16:20:28 +02:00
Fabio Manganiello b797add90d
Modify shebang header for Mercury JS script.
The RPM build process wants an absolute path.
2023-09-23 16:16:13 +02:00
Fabio Manganiello a872d6f554
Added Fedora to the available Docker base images. 2023-09-22 19:02:13 +02:00
Fabio Manganiello 79e24461cb
Coalesce to empty list if `zigbee.mqtt.devices` returns null.
continuous-integration/drone/push Build is passing Details
2023-09-22 17:00:53 +02:00
Fabio Manganiello 55965e962c
Store the Philips Hue bridge configuration under our workdir.
By default, the `phue` library will store the file containing the token
and the bridge configuration under `~/.python_hue`.

That's outside of our application folder, and it can't easily be copied
around or added to Docker volumes.

We should instead have it under `<WORKDIR>/light.hue/config.json`, in
line with what the other plugins do, and if `~/.python_hue` is available
but `<WORKDIR>/light.hue/config.json` isn't then we should copy the
legacy file to the new one.
2023-09-22 16:58:44 +02:00
Fabio Manganiello 761f2768cb
[#316] Added RPM dependencies.
continuous-integration/drone/push Build is passing Details
2023-09-21 23:20:06 +02:00
Fabio Manganiello 453b6becae
FIX: We shouldn't expand `cfgfile` if it's empty.
continuous-integration/drone/push Build is passing Details
2023-09-21 01:18:15 +02:00
Fabio Manganiello bdbe263905
Added croniter to system dependencies.
The python-croniter package has now been added both to Arch's and
Debian's official repos, so we can install it via pacman or apt rather
than pip.
2023-09-21 01:07:49 +02:00
Fabio Manganiello 648b4224bb
[#285] Removed old covid19 backend.
continuous-integration/drone/push Build is passing Details
Those endpoints aren't even working anymore.

Closes: #285
2023-09-21 00:26:35 +02:00
Fabio Manganiello 5d6d37785e
[#288] Removed legacy `http.poll` backend.
continuous-integration/drone/push Build is passing Details
Closes: #288
2023-09-20 23:53:12 +02:00
Fabio Manganiello 7ba9a8930a
[#291] Removed deprecated `light.hue` backend.
continuous-integration/drone/push Build is passing Details
Closes: #291
2023-09-20 23:46:40 +02:00
Fabio Manganiello a6efaad26d
[#306] Removed Travis CI integration.
continuous-integration/drone/push Build is passing Details
I've tried my best to keep it around, but the endpoints seem to be
broken, they no longer have a link to their API v3 documentation, and
the API Explorer that was supposed to be in the dashboard is gone.
2023-09-20 23:31:58 +02:00
Fabio Manganiello 3970470e17 Removed typing-inspect dependenccy
continuous-integration/drone/push Build is passing Details
2023-09-18 14:25:50 +02:00
Fabio Manganiello 3e8d6bb01e Removed `typing-extensions` dependency.
continuous-integration/drone/push Build is failing Details
The package isn't present on older versions of Debian.
2023-09-18 14:05:39 +02:00
Fabio Manganiello 07c88c9530
Added logic to prevent socket leakage from paho-mqtt upon client stop.
continuous-integration/drone/push Build is passing Details
2023-09-17 23:43:56 +02:00
Fabio Manganiello 3f4168eb69
Support for new `Quality` enumeration constants on `tidalapi`.
continuous-integration/drone/push Build is passing Details
2023-09-17 22:40:26 +02:00
Fabio Manganiello c6cda86b1c
LINT/regex fix for ESP plugin. 2023-09-17 17:10:40 +02:00
Fabio Manganiello 4c4a33dc7c
Added Bluetooth example configuration to sample config.yaml.
continuous-integration/drone/push Build is passing Details
2023-09-17 03:25:21 +02:00
Fabio Manganiello 46167a6c2a
Removed legacy zwave backend. 2023-09-17 02:46:24 +02:00
Fabio Manganiello 190cfa21b5
Fixed documentation references to some non-existing events. 2023-09-17 02:41:55 +02:00
Fabio Manganiello 0421325b26
Support to register/unregister custom handlers on the bus. 2023-09-17 02:29:11 +02:00
Fabio Manganiello 2e004c1a1e
`get_all_plugins` should use `Message.Encoder` for encoding the response.
continuous-integration/drone/push Build is passing Details
Some plugin information may include enums, tuples and other types that
aren't serializable by the default JSON serializer.
2023-09-17 02:11:52 +02:00
Fabio Manganiello fa2b84a269
Updated example configuration for mqtt and mqtt-based plugins.
continuous-integration/drone/push Build is passing Details
2023-09-16 15:26:07 +02:00
Fabio Manganiello 2fcd623c51
Migrated zwave.mqtt integration.
continuous-integration/drone/push Build is passing Details
Merged the zwave.mqtt plugin with the listener and removed the
leftovers of the legacy zwave plugin.
2023-09-16 03:58:19 +02:00
Fabio Manganiello 52cb1afb4b
Don't break words in entity value frames. 2023-09-16 02:58:17 +02:00
Fabio Manganiello e947cb1e67
Updated web dist files 2023-09-15 16:22:40 +02:00
Fabio Manganiello 4223576016
We should always update the entities cache on addEntity.
continuous-integration/drone/push Build is passing Details
Updating the entity cache only when we receive an event from a root
entity means that we lose events sent by individual child entities.
2023-09-15 00:45:38 +02:00
Fabio Manganiello 1020b63da7
All EntityMixin components should be allowed to emit `loading` events. 2023-09-15 00:34:29 +02:00