Fabio Manganiello
ceae310901
[`snapcast`] Merged backend logic into the plugin.
...
Closes : #283
2023-11-10 02:48:07 +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
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
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
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
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
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
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
07e7f06c7a
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing
Details
2023-11-04 11:12:51 +00: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
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
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
5e2973dd5f
[UI] Removed `<tt>` tag.
2023-11-03 20:54:46 +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
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
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
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
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
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
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
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
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
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
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
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
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
4da3c13976
First WIP commit for the new Integrations panel.
2023-10-09 01:33:44 +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
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
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
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
Fabio Manganiello
b746d0b402
Moved `get_message_response` to `platypush.utils`.
...
continuous-integration/drone/push Build is passing
Details
It is general-purpose enough to be used by all the integrations, not
only by the HTTP backend.
2023-09-05 13:03:30 +02:00
snyk-bot
46c40f6fa6
fix: upgrade sass from 1.64.2 to 1.65.1
...
Snyk has created this PR to upgrade sass from 1.64.2 to 1.65.1.
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-09-01 23:15:47 +00:00
Fabio Manganiello
043f303761
`s/HttpBackend._DEFAULT_HTTP_PORT/HttpBackend.DEFAULT_HTTP_PORT/g`
2023-08-19 13:30:51 +02:00
Fabio Manganiello
98e9abde18
Extended manifest files with Python system packages (if available).
...
continuous-integration/drone/push Build is passing
Details
- If a Python optional dependency is available as a system package on
the target system, try and install it that route rather than pip. It's
usually faster and it decreases the risk of breaking system packages.
- Added support for apk dependencies in manifest files. This brings the
number of distros officially supported by all the extensions to four:
- Alpine
- Arch
- Debian
- Ubuntu
2023-08-16 22:43:51 +02:00
Fabio Manganiello
a8a7ceb2ac
Implemented `HttpBackend._stop_workers`.
...
The Tornado WSGI container won't guarantee the termination of the
spawned workers upon termination, so the code of the backend has to take
care of it and terminate all the children processes of the server
process when it terminates.
This also means that `psutil` is now a required base dependency, as we
need to expand the process subtree under the webserver launcher.
2023-08-15 00:13:34 +02:00
Fabio Manganiello
827b564006
Using a single constant for DEFAULT_REDIS_QUEUE.
...
Also, catch `AttributeError` on `self._proc.terminate` in the
`HttpBackend`, since the process may already have been terminated and
set to null by another worker process.
2023-08-13 22:20:16 +02:00
Fabio Manganiello
1474685cc0
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing
Details
2023-08-06 22:51:57 +00:00
Fabio Manganiello
26b4dcba46
Reduced padding of ConfirmDialog body element.
continuous-integration/drone/push Build is passing
Details
2023-08-07 00:50:10 +02:00
Fabio Manganiello
5184543a3e
Normalize the size of the camera frame container from window size.
...
continuous-integration/drone/push Build is failing
Details
If the window is smaller than the camera resolution, then we should
scale down the container size accordingly.
2023-08-07 00:38:19 +02:00
Fabio Manganiello
dd313c6371
[Automatic] Updated UI files
continuous-integration/drone/push Build was killed
Details
2023-08-06 21:50:25 +00:00
Fabio Manganiello
2f007888fc
[Automatic] Updated UI files
continuous-integration/drone/push Build is failing
Details
2023-08-06 21:48:33 +00:00
Fabio Manganiello
609a8c6052
[Automatic] Updated UI files
continuous-integration/drone/push Build is failing
Details
2023-08-06 21:46:44 +00:00
Fabio Manganiello
276a9a7421
[Automatic] Updated UI files
continuous-integration/drone/push Build is failing
Details
2023-08-06 21:44:51 +00:00
Fabio Manganiello
715cdcfcff
More consistent style for the buttons on the tokens settings page.
continuous-integration/drone/push Build is failing
Details
2023-08-06 23:42:50 +02:00
Fabio Manganiello
bd49e460d5
More style improvements for the user settings panel.
continuous-integration/drone/push Build is passing
Details
2023-08-06 23:36:06 +02:00
Fabio Manganiello
6eed558342
More improvements on the users settings panel.
continuous-integration/drone/push Build was killed
Details
2023-08-06 23:14:54 +02:00
Fabio Manganiello
1d47b35219
Updated UI dependencies
2023-08-06 20:38:46 +02:00
Fabio Manganiello
237e0c47cb
Redesigned config panel UI.
2023-08-06 18:49:03 +02:00
snyk-bot
7cda9954d4
fix: upgrade vue-router from 4.1.2 to 4.2.3
...
Snyk has created this PR to upgrade vue-router from 4.1.2 to 4.2.3.
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-07-27 02:01:02 +00:00
snyk-bot
26c9694664
fix: upgrade core-js from 3.23.4 to 3.31.1
...
Snyk has created this PR to upgrade core-js from 3.23.4 to 3.31.1.
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-07-27 02:00:57 +00:00
Fabio Manganiello
e4756eb639
Replaced deprecated `flask.escape` with `markupsafe.escape`.
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone Build is passing
Details
2023-07-25 00:26:15 +02:00
Fabio Manganiello
e9a568fdd2
Unified interface to retrieve the Redis bus configuration.
...
A common `utils.get_redis_conf` has been created to handle the cascade
fallback logic used to retrive the default Redis configuration.
2023-07-24 01:04:13 +02:00
Fabio Manganiello
dd862db29a
[chore] LINT fixes
2023-07-24 00:35:03 +02:00
Fabio Manganiello
0dc380fa94
Removed dependency from prctl.
...
Also, black'd and LINT-fixed some files that hadn't been touched in a
while.
2023-07-23 19:17:30 +02:00
Fabio Manganiello
cfdecd5703
[ #267 ] Don't show the PWA popup again after the user dismisses it.
...
Plus, upgraded a bunch of frontend libraries.
Closes : #267
2023-07-23 02:44:17 +02:00
Fabio Manganiello
454228c56e
Upgraded UI dependencies
2023-07-23 02:42:14 +02:00
dependabot[bot]
33699fcac8
Bump word-wrap from 1.2.3 to 1.2.5 in /platypush/backend/http/webapp
...
Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap ) from 1.2.3 to 1.2.5.
- [Release notes](https://github.com/jonschlinkert/word-wrap/releases )
- [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.5 )
---
updated-dependencies:
- dependency-name: word-wrap
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-07-22 21:48:53 +00:00
dependabot[bot]
505cba44b8
Bump webpack from 5.70.0 to 5.88.2 in /platypush/backend/http/webapp
...
Bumps [webpack](https://github.com/webpack/webpack ) from 5.70.0 to 5.88.2.
- [Release notes](https://github.com/webpack/webpack/releases )
- [Commits](https://github.com/webpack/webpack/compare/v5.70.0...v5.88.2 )
---
updated-dependencies:
- dependency-name: webpack
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-07-22 21:46:59 +00:00
Fabio Manganiello
fa1364d854
Improved logging for requests, responses and events.
...
- The following logging namespaces are now used, to make it easier to
filter only log lines related to the logged application message:
- `platypush:events`
- `platypush:requests`
- `platypush:responses`
- Those messages are always logged as JSON, with no prefixes nor
suffixes.
- Requests are always logged when executed - no more delegation to the
upstream backend.
- Responses are always logged when fully populated (including `id`,
`origin`, `target` etc.), instead of being logged when still partially
populated. This makes it particularly easy to link request/response
IDs directly from the logs.
2023-07-15 01:11:45 +02:00
Fabio Manganiello
27cf1bec52
Removed some optional top-level imports.
...
Optional top-level imports in Tornado route declarations will trigger
`ImportError`. While this will just mean that those routes will be
skipped, it will also generate a lot of noise on the logs.
2023-07-01 03:13:38 +02:00
Fabio Manganiello
2fb6e4d7d0
Updated webapp dist files
2023-06-16 15:48:23 +02:00
Fabio Manganiello
9aa8e4538a
Better termination logic for the ffmpeg audio converter.
2023-06-16 11:47:37 +02:00
Fabio Manganiello
da93f1b3b0
[Chore] pylint
2023-06-14 01:44:36 +02:00
Fabio Manganiello
be794316a8
Merged `sound.stream_recording` and `sound.record`.
2023-06-12 13:06:02 +02:00
Fabio Manganiello
e238fcb6e4
Refactoring the `sound` plugin to use ffmpeg as a stream converter.
2023-06-11 12:48:49 +02:00
Fabio Manganiello
4587b262b0
Stream camera frames over HTTP using a Redis pub/sub mechanism.
2023-06-05 20:40:12 +02:00
Fabio Manganiello
d7208c6bbc
Refactored Tornado routes for native pub/sub support.
...
The Redis pub/sub mechanism is now a native feature for Tornado routes
through the `PubSubMixin`.
(Plus, lint/black chore for the sound plugin)
2023-05-30 21:58:27 +02:00
Fabio Manganiello
4bf9c01ac9
Moved camera routes.
...
Camera routes migrated from Flask blueprints to Tornado handlers.
2023-05-27 22:24:45 +02:00
Fabio Manganiello
a2f8e2f0d2
Fixed bottom margin for ConfirmDialog buttons
2023-05-22 16:44:53 +02:00
Fabio Manganiello
aaac6488d6
Updated webapp dist files
2023-05-22 02:24:24 +02:00
Fabio Manganiello
d7405ad05d
Added multiple parsers for the entities referenced in docstrings.
...
The `inspect` plugin can now detect references to plugins, backends,
events, responses and schemas in docstrings and replace them either with
links to the documentation or auto-generated examples.
2023-05-22 02:20:58 +02:00
Fabio Manganiello
4f11d7cf74
Updated webapp dist files
2023-05-21 03:15:16 +02:00
Fabio Manganiello
229b8f2985
Many improvements for the `execute` panel.
2023-05-21 03:04:52 +02:00
Fabio Manganiello
edf1dbee1d
Updated webapp dist files
2023-05-20 15:54:18 +02:00
Fabio Manganiello
5efc90ca17
Better PWA installation prompt.
...
Display a popup modal instead of a confirm box to prompt the user to
install the PWA app.
`confirm` blocks the JavaScript engine when run in `beforeMount` and
therefore the browser won't be able to proceed with `event.prompt()`.
2023-05-20 15:52:37 +02:00
Fabio Manganiello
666ea9ea6b
Added `use_werkzeug_server` option to `backend.http`.
...
There are situations where you may not want to run the HTTP server in a
full blown WSGI-over-Tornado container - unit/integration tests and
embedded single-core devices are among those cases.
In those scenarios, we should allow the user to be able to run the
backend using the built-in Werkzeug server provided by Flask.
2023-05-20 15:26:58 +02:00
Fabio Manganiello
013274bcbc
[ #259 ] Proper support for the progressive webapp ( #262 )
...
Closes: 259
Reviewed-on: #262
2023-05-20 02:42:33 +02:00
Fabio Manganiello
0a1209fe6e
Updated webapp dist files
2023-05-17 10:56:37 +02:00
Fabio Manganiello
33e2879413
Various UI improvements for the execute tab.
2023-05-17 10:41:02 +02:00
Fabio Manganiello
91daec579d
Reverted to the previous style for entities on mobile.
...
Better to use screen width wisely and avoid unnecessary padding.
2023-05-17 01:13:09 +02:00
Fabio Manganiello
2cba504e3b
Improvements for the autocomplete component.
2023-05-14 15:07:54 +02:00
Fabio Manganiello
8447f9a854
Improved rendering of actions/arguments documentation.
...
The frontend now calls `utils.rst_to_html` to render the docstrings as
HTML instead of dumping them as raw text.
Also, actions and arguments are now cached to improve performance.
2023-05-14 15:06:34 +02:00
Fabio Manganiello
72797e73ff
Changed the Tornado paradigm to start the WSGI workers.
...
Use `bind_sockets`/`fork_processes` instead of reinventing the wheel
with our own multiprocessing handling.
2023-05-13 12:35:20 +02:00
Fabio Manganiello
ac4fe4447e
Revert "Added a multi-worker approach to the Tornado WSGI container."
...
This reverts commit 71401a4936
.
Temporarily reverted this commit because the `reuse_address` on the
application's `listen` method has only been implemented in Tornado 6.2 -
and Debian stable still shipts Tornado 6.1.
2023-05-13 02:36:20 +02:00
Fabio Manganiello
71401a4936
Added a multi-worker approach to the Tornado WSGI container.
...
The WSGI container is a good option to wrap a multi-modal webapp
(Flask + websocket routes), but it's constrained to a single-process
approach and queued/pre-buffered requests. That makes performance poor
when handling requests that may take a few seconds to complete.
2023-05-13 01:26:18 +02:00
Fabio Manganiello
b7b93edbae
Updated dist files
2023-05-12 03:52:33 +02:00
Fabio Manganiello
a15191d4ca
Updated dist files
2023-05-12 03:51:59 +02:00
Fabio Manganiello
d4f8e51caf
A less blocking implementation of the entities loading UI logic.
2023-05-12 03:49:20 +02:00
Fabio Manganiello
62d846ddda
Updated dist files
2023-05-12 03:42:17 +02:00
Fabio Manganiello
23a5e90e2e
Updated dist files
2023-05-12 03:26:55 +02:00
Fabio Manganiello
6cd9cb6e76
Better entities caching on the frontend.
2023-05-12 03:18:22 +02:00
Fabio Manganiello
79871e0fa1
Fixed devServer routes in vue.config.js.
...
Use `127.0.0.1` instead of `localhost` for the Vue proxy.
2023-05-12 02:57:14 +02:00
Fabio Manganiello
f49ad4c349
Updated dist files
2023-05-10 02:52:24 +02:00
Fabio Manganiello
6b0f0883ee
A proper way to proxy websocket calls using the Vue devServer.
2023-05-10 02:27:01 +02:00
Fabio Manganiello
78c12212c6
[ #260 ] A simple entities caching mechanism using the browser storage.
2023-05-10 02:26:06 +02:00
Fabio Manganiello
74ab884b7a
Proper redirects upon `/execute` failure.
...
If a call to `/execute` fails with a 401 or 412 status, then redirect
the user to `/register` or `/login`.
2023-05-10 02:24:50 +02:00
Fabio Manganiello
a069d23bb7
[ #260 ] Added ``/ws/requests`` websocket route.
2023-05-09 02:40:32 +02:00
Fabio Manganiello
7716a416e9
[ #260 ] Support for sending events via websocket over `/ws/events`.
2023-05-09 02:18:58 +02:00
Fabio Manganiello
edb7197f71
[ #260 ] Implemented authentication for websocket routes.
...
Plus, refactored the `backend.http.app.utils` module by breaking it down
into multiple components, as the module was starting to get too large.
2023-05-09 00:03:11 +02:00
Fabio Manganiello
2d4b179879
Include the path info in the logging messages in WSRoute.
2023-05-08 12:35:54 +02:00
Fabio Manganiello
f5fcccb0bd
Refactored the new websocket routes.
...
Defined a `platypush.backend.http.ws` package with all the routes, a
base `WSRoute` class that all the websocket routes can extend, and a
logic in the HTTP backend to automatically scan the package to register
exposed websocket routes.
2023-05-08 11:45:14 +02:00
Fabio Manganiello
56dc8d0972
Migrated the webapp to Tornado.
...
It was just too painful to find a combination of versions of gunicorn,
gevent, eventlet, pyuwsgi etc. that could work on all of my systems.
On the other hand, Tornado works out of the box with no headaches.
Also in this commit:
- Updated a bunch of outdated/required integration dependencies.
- Black'd and LINTed a couple of old plugins.
2023-05-08 02:06:45 +02:00
Fabio Manganiello
f81e9061a3
`lifespan=on` is actually not required on Flask config level.
2023-05-07 16:30:41 +02:00
Fabio Manganiello
692180c653
Back to uvicorn workers from eventlet.
...
The eventlet API has way too many dependency issues with gunicorn.
Still TODO: Fix or at least mitigate the WSGI workers timeout issue when
they handle websocket connections.
2023-05-07 15:37:58 +02:00
Fabio Manganiello
8102178ba4
Updated dist files
2023-05-07 13:00:48 +02:00
Fabio Manganiello
c0a948f8ce
Removed remaining references to websocket port.
2023-05-07 12:54:13 +02:00
Fabio Manganiello
bdbbd24e6f
Only include /ws/events as a proxied websocket, without messing with the /ws route exposed by the Vue debugger
2023-05-07 12:22:51 +02:00
Fabio Manganiello
059fff8558
Updated dist files
2023-05-07 12:19:13 +02:00
Fabio Manganiello
f9b0bc905e
Migrated websocket service.
...
The websocket service is no longer provided by a different service,
controlled by a different thread running on another port.
Instead, it's now exposed directly over Flask routes, using
WSGI+eventlet+simple_websocket.
Also, the SSL context options have been removed from `backend.http`, for
sake of simplicity. If you want to enable SSL, you can serve Platypush
through a reverse proxy like nginx.
2023-05-07 12:08:28 +02:00
Fabio Manganiello
3aefc9607d
Migrated from waitress to gunicorn.
...
`waitress`, unlike `gunicorn`, doesn't provide an easy way to plug into
a WSGI socket that can be used for the websocket interface.
2023-05-07 00:42:57 +02:00
Fabio Manganiello
9951d62511
Added logic to automatically generate the secret key for Flask.
2023-05-06 22:04:48 +02:00
Fabio Manganiello
e33a391d25
Updated dist files
2023-05-06 12:37:00 +02:00
Fabio Manganiello
4f78d61223
Improved UI on mobile.
2023-05-06 12:34:27 +02:00
Fabio Manganiello
6e939bbe62
Close modals and dropdown when ESC is pressed.
2023-05-05 20:46:42 +02:00
Fabio Manganiello
e9e59c857a
Updated dist files
2023-05-05 02:51:33 +02:00
Fabio Manganiello
59bf1c2aa0
Added close button to the modal's header.
2023-05-05 02:48:41 +02:00
Fabio Manganiello
8af3ae17b8
A more efficient way of detecting the entity groups to display.
...
Instead of iterating over each of the entities in a grouping to find out
which groups should be displayed based on the selector's policy, the
selector can directly keep its `selectedGroups` attribute in sync with
the index.
2023-05-05 02:33:34 +02:00
Fabio Manganiello
98b9d31dd4
Updated dist files
2023-05-05 01:10:24 +02:00
Fabio Manganiello
4383dbb2b4
Bluetooth UI toggle aligned to the right - like all other toggles.
2023-05-05 01:04:39 +02:00
Fabio Manganiello
285f3941d9
Always use an external uWSGI server to run the web service.
...
Added `waitress` dependency. For performance and security reasons, it's
better to always run the Flask application inside of a uWSGI server.
`waitress` also makes things easier by avoiding to ask the user to
manually provide the external executable arguments, as it was the case
with `uwsgi` and `gunicorn`.
2023-05-05 00:07:13 +02:00
Fabio Manganiello
99311a6e71
Updated dist files
2023-05-04 02:23:24 +02:00
Fabio Manganiello
7db09276ca
Some small style improvements.
2023-05-04 02:20:40 +02:00
Fabio Manganiello
2398cac572
A more efficient and clean logic for `selectedEntities` calculation.
2023-05-04 02:19:55 +02:00
Fabio Manganiello
394e27eaf2
Refactored style for UI dropdowns.
2023-05-04 02:19:09 +02:00
Fabio Manganiello
5d1c8cf8e9
Additional null check on this.searchTerm
2023-05-03 03:33:34 +02:00
Fabio Manganiello
3482c29679
Updated dist files
2023-05-03 03:18:44 +02:00
Fabio Manganiello
a06d0ef6a1
Merged all the items in the entities panel's header in the Selector component.
2023-05-03 03:14:46 +02:00
Fabio Manganiello
7c7818dd76
Fixed entity search.
...
It was broken by the previous refactor of the entities panel, which no
longer triggers the `watch` callback on the upstream `entityGroups`.
The new approach listens for entity updates on the frontend bus and
dynamically creates the entity groupings in `selectedGroups` if they are
missing.
2023-05-03 02:12:14 +02:00
Fabio Manganiello
9922305ac5
Fixed grouping for `entityGroups.id`.
...
Unlike the other entity groupings, which are 4-layered (`grouping ->
group -> entity_id -> entity`), the grouping by ID only needs 3 layers
(`grouping -> entity_id -> entity`).
2023-05-03 02:09:51 +02:00
Fabio Manganiello
cc2ec1db7f
The HTTP Zeroconf service should be registered before the server starts.
2023-05-02 21:24:50 +02:00
Fabio Manganiello
55cb87d14f
Updated dist files
2023-05-02 10:24:11 +02:00
Fabio Manganiello
68359b88a9
More performance improvements for the entities page.
...
- Don't recalculate entity groups every time. Instead, keep them in sync
every time an entity is added or removed.
- Removed `computedChildren` from the entity component - no null nodes
are guaranteed to be passed now, so there's no need for another
iteration on the list of children.
- `childrenByParentId` now only looks in the scope of the entity's
children instead of searching all the entities.
2023-05-02 10:14:03 +02:00
Fabio Manganiello
0fc0a22cd7
Reintroduced loading icon spin animation.
2023-05-02 10:08:36 +02:00
Fabio Manganiello
de76c2b6a8
Updated dist files
2023-05-01 10:12:43 +02:00
Fabio Manganiello
835ad9f2dc
Use plugin as a default entity grouping instead of category
2023-05-01 10:06:11 +02:00
Fabio Manganiello
85ecdcb0cb
Removed entity icon loading animation.
...
The animation has a big impact on page loading performance when the
system includes a high number of entities that all need their loading
animation to be render.
2023-05-01 09:49:34 +02:00
Fabio Manganiello
24c6b7b377
Updated dist files
2023-05-01 01:25:27 +02:00
Fabio Manganiello
b7cf1a42de
Use a proxy value in the `variable` component for the textbox.
...
Otherwise the value may keep being overwritten while the user is typing
a new one.
2023-05-01 01:22:20 +02:00
Fabio Manganiello
a3839e637d
Set a max-width: 600px for group containers.
2023-05-01 01:22:02 +02:00
Fabio Manganiello
1e43866978
Moved more entity common CSS out of the Vue component.
2023-05-01 01:21:18 +02:00
Fabio Manganiello
de84a65a22
Show prettified entity type when hover the entity icon.
2023-05-01 01:20:31 +02:00
Fabio Manganiello
7906ee2c49
Entity components style improvements.
...
Multiple style improvements for the entity components. Among these:
- A more consistent style for entity values and toggler buttons.
- Fixed overflowing/underflowing entities on smaller/larger screen
sizes.
- Simplified the stylesheets for many entities as many component classes
have now been moved to `common.scss`.
2023-04-30 22:32:50 +02:00
Fabio Manganiello
d1066ba624
Use Math.round instead of parseInt when parsing durations.
2023-04-30 16:22:37 +02:00
Fabio Manganiello
94a493580c
Updated dist files
2023-04-30 01:36:13 +02:00
Fabio Manganiello
0b853e0a54
Apply `word-break: break-all` to entities' names and values.
...
The entity name and value in the component header may be arbitrarily
long and rendered on small screens.
We therefore need to ensure that the text won't overflow the screen
width.
2023-04-30 01:17:54 +02:00
Fabio Manganiello
52f036dc1d
Updated dist files
2023-04-29 22:49:35 +02:00
Fabio Manganiello
cbf0ea8a19
Style fixes for mobile screens.
2023-04-29 22:45:10 +02:00
Fabio Manganiello
b4048002b9
Updated dist files
2023-04-29 18:21:32 +02:00
Fabio Manganiello
6d9c34f06f
Added VariableModal to set variables from the dashboard.
2023-04-29 18:20:41 +02:00
Fabio Manganiello
38c87ef39f
Added frontend component for the `Variable` entity.
2023-04-29 11:37:21 +02:00
Fabio Manganiello
ee54e0edbf
Use a font-awesome spinner instead of an animated gif when loading entities
2023-04-25 16:42:01 +02:00
Fabio Manganiello
d33d760361
Better way to import `declarative_base` from SQLAlchemy.
...
Import `declarative_base` in a way that is compatible with any
SQLAlchemy version between 1.3 and 2.x.
2023-04-24 23:23:55 +02:00
Fabio Manganiello
e955ffc018
Be more resilient in DateTimeWeather widget about custom temperature/humidity names or non-numeric data
2023-04-24 12:48:51 +02:00
Fabio Manganiello
5638c567ff
Show temperature and humidity on the DateTimeWeather widget upon sensor events only if the sensor data is numeric.
2023-04-24 10:59:45 +02:00
Fabio Manganiello
512ced3e94
Updated dist files
2023-04-23 02:13:48 +02:00
Fabio Manganiello
6439e235d2
Updated caniuse dependency
2023-04-23 02:11:21 +02:00
Fabio Manganiello
a72c32cb00
Added battery entity support to `system` plugin.
2023-04-23 00:41:21 +02:00
Fabio Manganiello
b3440ab96b
Added support for fan sensors on the `system` plugin.
2023-04-23 00:08:27 +02:00
Fabio Manganiello
45d5f439be
Added support for system temperature sensor entities.
2023-04-22 22:42:11 +02:00
Fabio Manganiello
374f936c1f
Merged `network_stats` into `NetworkInterface` model.
2023-04-22 17:19:24 +02:00
Fabio Manganiello
f4036be52b
Extracted and refactored more common elements of the Entity components.
2023-04-22 17:19:23 +02:00
Fabio Manganiello
977b55dea9
Merged network addresses into `NetworkInterface` model.
2023-04-22 17:19:23 +02:00
Fabio Manganiello
98a300c4b1
Added `NetworkInterface` entities to `system` plugin.
...
Plus, `platypush.schemas.system` has now been split into multiple
submodules to avoid a single-file mega-module with all the system
schemas definitions.
2023-04-21 00:45:15 +02:00
Fabio Manganiello
44b8fd4b34
Support for `disk` entities in the `system` integration.
2023-04-20 16:26:51 +02:00
Fabio Manganiello
6b03451386
Better responsive alignment for the collapse toggler.
2023-04-20 16:26:05 +02:00
Fabio Manganiello
e8c96ad35d
Added `convertTime` utility function
2023-04-20 02:27:58 +02:00
Fabio Manganiello
153d03d43f
Moved CPU percentage on the level of the CPU entity instead of a child entity.
2023-04-19 01:48:05 +02:00
Fabio Manganiello
4ebfbf3851
Added memory stats entities.
2023-04-19 01:31:11 +02:00
Fabio Manganiello
1cee0459cf
Added `CpuFrequency` entity to `system`.
2023-04-18 01:49:36 +02:00
Fabio Manganiello
a5b0a524f6
Added `CpuStats` entity to `system`.
2023-04-18 01:19:06 +02:00
Fabio Manganiello
4842c1911b
Frontend entities should have a reference to `allEntities`.
...
There are probably more optimal ways of achieving this other than
passing a reference to the full list of entities to each of the
entities, such as running a BFS to recursively expand all the entities
within the child hierarchy of an entity.
This is needed because the entity needs to know which entities aren't
direct children, but are two or more layers down in the hierarchy, so
they should be passed to their own child entities.
2023-04-17 02:25:03 +02:00
Fabio Manganiello
e810025a6d
Added `Cpu` and `CpuTimes` entities.
2023-04-17 02:25:03 +02:00
Fabio Manganiello
65481dc6b4
Added `PercentSensor` entity type.
2023-04-17 02:25:02 +02:00
Fabio Manganiello
186a21f715
Added CpuInfo entity frontend components.
2023-04-17 02:25:01 +02:00
Fabio Manganiello
d5ddc0c65e
Migrated `arduino` integration to the new `SensorPlugin` API.
2023-04-03 01:36:12 +02:00
Fabio Manganiello
cf16076bce
Added icons for new entity sensor sources.
2023-04-03 01:36:11 +02:00