Commit Graph

3517 Commits

Author SHA1 Message Date
Fabio Manganiello c64c28f7a8
(Re)-added `backend/sensor/__init__.py` file.
continuous-integration/drone/push Build is passing Details
If the empty file is missing then any remaining backends under that
package won't be indexed.
2024-01-07 00:31:45 +01:00
Fabio Manganiello f9e5117145
[Automatic] Updated components cache
continuous-integration/drone/push Build is passing Details
2024-01-06 23:07:31 +00:00
Fabio Manganiello f733c6318f
Moved optional import in constructor block.
continuous-integration/drone/push Build is passing Details
2024-01-07 00:05:51 +01:00
Fabio Manganiello e803807b8d
[Automatic] Updated components cache
continuous-integration/drone/push Build was killed Details
2024-01-06 21:51:43 +00:00
Fabio Manganiello edd92b8467
Fix: Ensure that components cache keys are ordered before dumping to file.
continuous-integration/drone/push Build is passing Details
Reason: The CI/CD automation regenerates the cache file, and commits
the changes if it differs from the previous version.

The only way to ensure semantic equivalence is to sort the keys upon
dump.
2024-01-06 22:50:34 +01:00
Fabio Manganiello 0f130235d3
[Automatic] Updated components cache
continuous-integration/drone/push Build was killed Details
2024-01-06 21:46:12 +00:00
Fabio Manganiello 4926f28f24
[Automatic] Updated components cache
continuous-integration/drone/push Build was killed Details
2024-01-06 21:45:04 +00:00
Fabio Manganiello cce04ef729
Updated components file
continuous-integration/drone/push Build is failing Details
2024-01-06 22:41:25 +01:00
Fabio Manganiello 771ecd9a5b
Fixed typo in the package name of the Github manifest. 2024-01-06 22:41:24 +01:00
Fabio Manganiello 30bbc396fb
[Automatic] Updated UI files
continuous-integration/drone/push Build is failing Details
2024-01-06 21:27:39 +00:00
Fabio Manganiello 6e1ab92298
New components cache management.
continuous-integration/drone/push Build is passing Details
The cache is no longer generated at runtime when the application runs -
which may take quite a while, especially on fresh installations.

A `components.json.gz` file is instead generated by the CI/CD process on
every commit to the main branch, and distributed with the package.

The application will read this file when the `inspect` plugin is first
initialized.

This also means that we can no longer cache the `install_cmds`, as they
change depending on the target OS. A new
`application.get_install_commands` action has now been made available to
the UI, so it can get the correct installation commands at runtime.
2024-01-06 22:21:59 +01:00
Fabio Manganiello ef885e096f
Added `inspect.get_pkg_managers` internal action.
It will be used by the UI to put together the installation commands.
2024-01-06 03:02:31 +01:00
snyk-bot c6593cfa06
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-6144788
2024-01-05 14:12:29 +00:00
Fabio Manganiello e1b6be7673
Marshmallow has replaced `field.default` with `field.dump_default`.
continuous-integration/drone/push Build is passing Details
2024-01-05 02:56:10 +01:00
Fabio Manganiello 8fd5009553
[foursquare] Proper cast to number for db variables which may be strings. 2024-01-05 02:56:10 +01:00
Fabio Manganiello 5167597ace
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2024-01-05 01:27:29 +00:00
Fabio Manganiello afee6c5c85
[music UI] Implemented infinite scroll for playlist view.
continuous-integration/drone/push Build is passing Details
Instead of loading all the tracks in the DOM (very inefficient and slow
on slow devices and/or with big playlists), we should keep a window of
100 items in the screen and roll it over the playlists as the status
change or the user scrolls.
2024-01-05 02:19:38 +01:00
Fabio Manganiello 91a8fd3b56
[system] A more robust logic to parse cache size from `cpuinfo`.
continuous-integration/drone/push Build is passing Details
2024-01-04 13:55:08 +01:00
Fabio Manganiello 9c3da7a2a9
Several improvements for request/procedure execution.
continuous-integration/drone/push Build is passing Details
- Fixed regression introduced by incorrect format string in `exec`.

- LINT for the `procedure` module.

- Apply `Message.Encoder` when dumping values from the context.
2024-01-04 13:13:16 +01:00
Fabio Manganiello b72fb83d18
Merge branch '286/merge-foursquare-backend'
continuous-integration/drone/push Build is passing Details
2024-01-01 23:00:55 +01:00
Fabio Manganiello 4aeff10a5d
[#286] Merge Foursquare backend and plugin.
continuous-integration/drone/push Build is passing Details
Closes: #286
2024-01-01 22:54:18 +01:00
Fabio Manganiello efe46386f4
[Entities UI] Reverted `.extension-container` max-width.
continuous-integration/drone/push Build is passing Details
2024-01-01 14:27:18 +01:00
Fabio Manganiello b8f8236c28
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2024-01-01 13:24:56 +00:00
Fabio Manganiello 35772c0ae3 [Entities UI] Reverted `.extension-container` max-width. 2024-01-01 13:23:24 +00:00
Fabio Manganiello 3fbb0d289b Fixed docstring 2024-01-01 13:23:24 +00:00
Fabio Manganiello 7f13e02803
Fixed docstring 2023-12-31 04:34:42 +01:00
Fabio Manganiello 1abf8c964a
Merge branch 'master' into 287/github-backend-migration
continuous-integration/drone/push Build is passing Details
2023-12-30 16:29:51 +01:00
Fabio Manganiello 5eb09eab1a [#287] Migrated `github` from a backend to a runnable plugin.
Closes: #287
2023-12-30 15:28:16 +00:00
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