Commit graph

3509 commits

Author SHA1 Message Date
d4543c2fb7
Added ProcedureEditor component. 2023-12-16 19:03:46 +01:00
07a144aadc
[ActionTile] Support for drag and drop. 2023-12-16 19:00:04 +01:00
837007132d
[FloatingButton] Better default colors. 2023-12-16 18:59:30 +01:00
3bc27a505f
[UI] setUrlArgs should remove args when value == null. 2023-12-16 18:58:31 +01:00
065f7d74a5
[ActionTile] Better hover style. 2023-12-16 14:23:46 +01:00
63767cb87c
[UI] Added ActionTile component. 2023-12-16 14:14:34 +01:00
7fcffe899e
[ActionEditor] Support for action save/input events. 2023-12-16 14:13:11 +01:00
f9ba4564e7
[Tabs UI] Force height to $tab-height. 2023-12-16 14:12:30 +01:00
028f48ed49
[Autocomplete UI] Better handling of blur events. 2023-12-16 14:09:04 +01:00
1dfbe0c12d
Ability to specify a custom initial action for the ActionEditor. 2023-12-14 22:22:10 +01:00
8bbafd2f7d
Better logic on the UI to parse the current URL fragment arguments. 2023-12-13 21:56:34 +01:00
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
4e85087c0f
Added AlarmEditor component to Alarm. 2023-12-12 22:52:11 +01:00
d4f6d174c8
Added FileSelector UI component. 2023-12-12 21:13:55 +01:00
bac06e9e7b
Added TimeInterval component. 2023-12-12 00:05:46 +01:00
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
6e7c5def2f
CronEditor should contain the raw cron expression and a copy button. 2023-12-11 22:18:57 +01:00
00694f4e10
CopyButton events should have a .prevent clause. 2023-12-11 22:18:17 +01:00
61ef48119f
Apply default input rules to time and datetime-local elements. 2023-12-11 22:17:47 +01:00
627bb66957
Added CronEditor component. 2023-12-11 00:25:24 +01:00
894faaad1e
[#340] Force a refresh via alarm.status when Alarm view loads. 2023-12-10 21:53:19 +01:00
b4be56ec2c
[#340] Added condition_type field to alarm objects. 2023-12-10 21:52:50 +01:00
e6e4396e49
Enhanced get_default_media_plugin to filter by video/audio plugins. 2023-12-10 21:50:53 +01:00
03c167d6b7
[#340] Added Alarm.is_cron property. 2023-12-10 20:58:13 +01:00
2d8f6102c1
[#340] Added alarm.edit action. 2023-12-10 20:39:06 +01:00
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
686085750f
[#340] Added configuration snippet for the new alarm integration. 2023-12-10 15:45:36 +01:00
dfa0727289
[#340] Added alarm UI panel. 2023-12-10 15:33:19 +01:00
62054e83cc
Remaining entity modal style rules moved from Entities to EntityModal. 2023-12-10 15:32:42 +01:00
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
ca57d3d7b3
[#340] Initial implementation of the alarm entities UI. 2023-12-09 20:33:11 +01:00
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
34e2a59285
Added optional id attribute to ToggleSwitch. 2023-12-09 16:12:08 +01:00
4b578c38c8
[#340] Better state management for alarms. 2023-12-09 14:25:18 +01:00
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
fcb6b621ab
[#340] Added persistence of alarm entities. 2023-12-09 01:25:12 +01:00
3ffaaa0eb9
Added Procedure.to_dict method.
Also, LINT+black for the `procedure` module.
2023-12-09 01:23:36 +01:00
a6d6fd4067
Message objects enhancements.
- Support smart JSON serialization of `Message` objects.
- Added `Message.to_dict` method.
2023-12-09 01:20:20 +01:00
5ad1a62293
[#340] Merged alarm backend into the alarm plugin.
Closes: #340
2023-12-06 19:23:19 +01:00
2670d40094
Added get_default_media_plugin utility. 2023-12-06 01:31:05 +01:00
680de865c4
Minor docstring fix. 2023-12-04 03:09:02 +01:00
5823dd0e21
[#292] Converted backend.log.http to a runnable plugin.
Closes: #292
2023-12-04 03:03:21 +01:00
1843ab224b
[#289] Converted backend.file.monitor into a runnable plugin.
Closes: #289
2023-12-04 03:03:20 +01:00
d484a34c00
[Automatic] Updated UI files 2023-12-03 23:34:57 +00:00
d048752184
[#301] Exposing hosts as entities in the ping plugin.
Closes: #301
2023-12-04 00:36:45 +01:00
3bb7c02572
[#301] Merged ping backend and plugin.
Also, removed `ping` response types.
2023-11-24 02:06:53 +01:00
71ccffa698
[weather.buienradar] Implemented forecast support. 2023-11-23 01:35:58 +01:00
b969afb1cf
Added support for weather forecast events and entities. 2023-11-23 01:35:58 +01:00
841a28066b
Added support for generic kwargs to publish_entities. 2023-11-23 01:35:57 +01:00
ca7c89949b
Only react on NewWeatherConditionEvent if plugin_name is compatible. 2023-11-23 01:35:57 +01:00
aca71c6bc7 [wallabag] Improved OAuth flow integration.
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
7bb15b0a03
[Automatic] Updated UI files 2023-11-20 02:08:35 +00:00
a0d8c522a2
[#308] Finalized weather integrations migration.
- Migrated `weather.buienradar` integration.
- Removed last leftovers of the previous weather backends and responses.

Closes: #308
2023-11-20 03:10:00 +01:00
2dac98c56e
More rst fixes. 2023-11-20 03:09:59 +01:00
a798cfa387
[Automatic] Updated UI files 2023-11-20 01:42:12 +00:00
80be79f5e8
Fixed link format. 2023-11-20 02:43:18 +01:00
bc8730d6f0
[#308] Removed weather backend. 2023-11-20 01:54:10 +01:00
b8a4b9e4c5
Implemented support for weather entities. 2023-11-20 01:46:01 +01:00
bf8f31545a
Fixed alignment of entity icon in modal. 2023-11-19 22:33:19 +01:00
b800899859
[#308] Refactored weather.openweathermap plugin. 2023-11-19 00:10:10 +01:00
6108cbb621
Added Config.get_device_id() classmethod. 2023-11-18 23:04:19 +01:00
eec2908cc2
Removed DarkSky integration.
The API has gone and it's been merged into Apple Weather.
2023-11-18 21:45:47 +01:00
674c1036c5
Fixed some plugin usages of self._bus.
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
8817581061
Removed -U option from pip command when installing deps.
We don't need to forcefully upgrade packages that don't need to be
upgraded.
2023-11-18 16:07:16 +01:00
869ef38364
Removed explicit numpy pip dependency in assistant.google.
It will be installed by the other dependencies anyway.
2023-11-18 16:01:24 +01:00
fdaff32cd0
Fixed docstring for chromecast.status. 2023-11-18 14:17:17 +01:00
1a777c6276
Removed Todoist backend and migrated responses to schemas.
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
c2f53b7771
Added _bus property on Plugin. 2023-11-18 10:13:35 +01:00
f12af08e73
Minor return type fix. 2023-11-17 22:30:30 +01:00
0f9614506b
[trello] Updated procedure to retrieve the frontend cloud token. 2023-11-17 10:28:27 +01:00
c919cf0cd8
[trello] (Almost) complete plugin rewrite.
- 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
39b4483401
Fixed joystick manifest. 2023-11-16 22:08:00 +01:00
7bb08bca07
[joystick] Rewritten joystick integration as a plugin.
And removed legacy `joystick*` backends and `inputs` plugin.

Closes: #290
2023-11-16 21:43:56 +01:00
5e629990e6
[Automatic] Updated UI files 2023-11-15 02:04:50 +00:00
d617443af6
[YouTube] Added subscriptions+channels support.
Closes: #337
2023-11-15 03:05:58 +01:00
9ed7026aaf
[media UI] Propagate free text filter to all the views. 2023-11-15 03:05:58 +01:00
ae017516c4
[YouTube UI] Support playlist navigation in the media nav. 2023-11-15 03:05:57 +01:00
4853f51c8b
[YouTube] Added (read-only) playlists support. 2023-11-15 03:05:57 +01:00
b491f81cda
[media UI] Added loading spin overlay upon play. 2023-11-15 03:05:57 +01:00
9e5728f8ba
[Automatic] Updated UI files 2023-11-13 01:39:51 +00:00
96e69811fe
[#337] Initial YouTube UI with feed support. 2023-11-13 02:40:50 +01:00
f425e95e7e
[media UI] Show track image if available on desktop+ size. 2023-11-13 02:40:50 +01:00
60fb7bba5f
[media UI] Added support for generic media providers. 2023-11-13 02:40:50 +01:00
be28965d84
[youtube] Added youtube.get_feed action. 2023-11-13 02:40:50 +01:00
b63579b81c
[UI] Fixed some glitches of the Dropdown component. 2023-11-13 02:40:49 +01:00
f6c752c80e
[Automatic] Updated UI files 2023-11-12 14:59:23 +00:00
50922cf149
[media UI] Fixed player selector style after Dropdown component changes. 2023-11-12 15:55:28 +01:00
ca72e22820
[UI] Proxy /media/* requests to upstream when Vue is in debug mode. 2023-11-12 15:55:03 +01:00
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
6dfe2324c1
[UI] Added navigation crumbs to the file browser. 2023-11-12 15:53:46 +01:00
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
e416a70658
[UI] (Re)-added required logo-256x256.png image. 2023-11-12 15:52:07 +01:00
cad36b7911
[UI] Watch the connected flag for changes to update the Nav indicator. 2023-11-12 14:00:18 +01:00
60b5f235a7
[Automatic] Updated UI files 2023-11-12 02:08:23 +00:00
1f321c32dc
[media.chromecast] Full plugin rewrite. 2023-11-12 03:08:54 +01:00
20aeb0b72e
[system] Some versions of cpuinfo may return cache sizes in human-readable format. 2023-11-10 21:55:41 +01:00
9a090d1b46
[system] Cache sizes can also be float, not necessarily int. 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
3d62069775
[Automatic] Updated UI files 2023-11-10 01:48:45 +00:00
ceae310901
[snapcast] Merged backend logic into the plugin.
Closes: #283
2023-11-10 02:48:07 +01:00
6c3edb73f9
[music.snapcast] Fixed message serialization issue.
Closes: #338
2023-11-09 22:46:54 +01:00
1ec42e11fc
[Automatic] Updated UI files 2023-11-09 01:46:44 +00:00
52ee614ec4
[media] Added logic to parse local media metadata. 2023-11-09 02:47:34 +01:00
a83f4729a6
[UI] Extracted grid into layout.scss. 2023-11-09 02:47:34 +01:00
4814c56a2d
[media UI] Added resolution to media info. 2023-11-09 02:47:34 +01:00
90a9684404
[media UI] Added extra rating fields to the media info component. 2023-11-09 02:47:33 +01:00
cd635ea69e
[torrent] Fixed duration and image for TV series results. 2023-11-09 02:47:33 +01:00
e66ca105d7
[jellyfin] Added duration field to video results. 2023-11-09 02:47:33 +01:00
d1b721dba5
[torrent] Added image to search results. 2023-11-09 02:47:33 +01:00
eb7a96ee94
[youtube] Added more metadata fields to search results. 2023-11-09 02:47:32 +01:00
d7093d18c5
[media UI] Major redesign of the search results. 2023-11-09 02:47:32 +01:00
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
fafc1747d6
[Automatic] Updated UI files 2023-11-06 23:45:02 +00:00
3d2dc22ed3
[media UI] Improved media UI. 2023-11-07 00:45:45 +01:00
e7bd61e0d4
Black/LINT for Jellyfin plugin. 2023-11-07 00:45:45 +01:00
a94ddd3f05
[torrent] duration * 60 for results returned by PopcornTime API. 2023-11-07 00:45:44 +01:00
1d41df51e7
[media] Extended current track with ytdl metadata if available. 2023-11-07 00:45:44 +01:00
a939cb648c
[media UI] Extracted PlayPauseButton into its own component. 2023-11-07 00:45:44 +01:00
7889846cd6
[Automatic] Updated UI files 2023-11-06 01:29:16 +00:00
2caa171c6d
[media UI] Fixed alignment of the controls right handle. 2023-11-06 02:25:54 +01:00
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
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
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
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
daa93f5994
[media UI] Fixed style of the Play URL modal. 2023-11-05 12:19:36 +01:00
71bca662a1
media.play should support anything supported by a yt_dlp extractor. 2023-11-05 02:40:38 +01:00
e45fb9c8ac
Major rewrite of the media routes.
- 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
0e2738d849
Added _on_error handler to StreamingRoute. 2023-11-05 01:03:40 +01:00
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
f7fe844296
Black/LINT pass for media handler routes. 2023-11-04 16:13:52 +01:00
11c3b7820d
[torrent] Create download_dir if it doesn't exist. 2023-11-04 15:48:05 +01:00
07e7f06c7a
[Automatic] Updated UI files 2023-11-04 11:12:51 +00:00
2b12984c81
[youtube] Full plugin rewrite.
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
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
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
b4bf30945a
[media] Black/LINT for MediaPlugin. 2023-11-04 00:50:08 +01:00
efdb63443d
Renamed the youtube plugin.
From `google.youtube` to `youtube`.
2023-11-04 00:07:29 +01:00
9ac25a7627
[Automatic] Updated UI files 2023-11-03 21:24:49 +00:00
3b335723a9
Merge pull request #387 from BlackLight/snyk-upgrade-7f1672a9074c3d844aa231ad5ba0e90d
[Snyk] Upgrade core-js from 3.23.4 to 3.31.1
2023-11-03 22:18:22 +01:00
8acb4156e0
Merge branch 'master' into snyk-upgrade-7f1672a9074c3d844aa231ad5ba0e90d 2023-11-03 22:11:01 +01:00
664ca7f9b5
Merge branch 'master' into snyk-upgrade-ae486550d733dccfaf3fab04d0756007 2023-11-03 22:07:35 +01:00
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
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
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
f6952f1198
[Automatic] Updated UI files 2023-11-03 20:56:12 +00:00
170e37945e [UI] Make sure that a Modal never overflows its parent. 2023-11-03 20:54:46 +00:00
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
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
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
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
5e2973dd5f [UI] Removed <tt> tag. 2023-11-03 20:54:46 +00:00
ba5d505c9b [youtube] Black/LINT pass. 2023-11-03 20:54:46 +00:00
f6cb1fa4a7 Added utils.get_default_downloads_dir. 2023-11-03 20:54:46 +00:00
0e29e770fb Updated sample config snippet for tts.mimic3. 2023-11-01 02:30:25 +00:00
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
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
d5514d7f27 Added utils.is_debug_enabled. 2023-10-31 00:44:05 +00:00
ef3b1d20f2 Updated MediaPlugin documentation snippet. 2023-10-31 00:44:05 +00:00
0cbd0a94d6 tts plugins should leverage sound`, not an external media player. 2023-10-31 00:44:05 +00:00
72b2625425 Updated tts plugin dependencies, as they now leverage the sound plugin. 2023-10-31 00:44:05 +00:00
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
42912581f9 [Fix] Always initialize AssistantPlugin._conversation_start_sound. 2023-10-23 21:30:49 +00:00
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
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
cea3055369 Indent pre- and post-install shell scripts in docs. 2023-10-23 15:48:09 +00:00
6d694f02b4
[Automatic] Updated UI files 2023-10-23 14:04:25 +00:00
a005958317
[Assistant] Added assistant entity type. 2023-10-23 16:02:05 +02:00
fd26f7fef3
[UI Nav] Fixed position of the connected status dot. 2023-10-23 15:57:47 +02:00
5c22271e88
[UI] Expose the connected flag on the root element level. 2023-10-23 15:03:36 +02:00
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
fb017a8b35
[assistant.google] Added doc on how to configure audio devices. 2023-10-22 22:49:41 +02:00
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
645e8c8f77
Added updated configuration snippet for assistant.google plugin. 2023-10-22 21:53:15 +02:00
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
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
e24438980a
[sound] Better logic for default sound device auto-detection. 2023-10-22 18:07:25 +02:00
4d582bb6bc
Ensure that the application always terminates on Ctrl+C. 2023-10-22 02:33:15 +02:00
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
a909dc5f0f
[Fix] The base per-OS requirements filename is always lowercase. 2023-10-22 01:45:23 +02:00
e65eef34d3
[application] application.install should redirect stderr->stdout. 2023-10-22 01:44:39 +02:00
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
02049030d0
paho module added to automocks. 2023-10-21 19:55:50 +02:00
4883f49b19
Removed unused travisci events. 2023-10-21 19:15:34 +02:00
cd87cc3e43
Minor docstring fixes. 2023-10-21 18:08:29 +02:00
8634572c34
Small docstring fix. 2023-10-20 01:41:30 +02:00
0eae6fd48d
Misc dependencies and mock fixes.
- `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
ed2a56de42
paho.mqtt should also be added to the mock modules 2023-10-20 00:00:07 +02:00
e1fc38e014
[Automatic] Updated UI files 2023-10-19 17:52:56 +00:00
2c37596478
Updated UI files 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
4c6d966038 [Doc fix] Fixed indent in the documentation of the application.install action. 2023-10-19 12:13:08 +02:00
7eaf8dbdc0
[Automatic] Updated UI files 2023-10-18 22:53:48 +00:00
38c5172316
[UI] Show the connected/disconnected status in the Nav icon. 2023-10-19 00:33:17 +02:00
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
b724e80ee2
[Settings UI] Added Stop and Restart application buttons. 2023-10-18 23:45:46 +02:00
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
f0255549c8
[utils] Added utils.to_yaml action. 2023-10-18 22:50:52 +02:00
c7acc03c8f
[inspect] Added get_enabled_plugins and get_enabled_backends actions. 2023-10-18 22:10:32 +02:00
c05d887551
[application] Added application.install action.
It can be used to programmatically install extensions.
2023-10-18 19:33:00 +02:00
e2e349a2ad
[Automatic] Updated UI files 2023-10-18 01:01:06 +00:00
922297bf58
[Extensions UI] Support for initializing an extension from URL. 2023-10-18 03:00:54 +02:00
137855b4fc
[Entities UI] Fixed collapse toggling logic. 2023-10-18 03:00:54 +02:00
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
e5d84242bb
[Extensions UI] Action URLs now point to the Execute panel. 2023-10-18 03:00:53 +02:00
6f01c35a0f
[UI] Added utilities to get and set args on the URL fragment. 2023-10-18 03:00:53 +02:00
a30c07fbb5
[Execute UI] Make sure that the list of arguments doesn't overflow. 2023-10-18 03:00:53 +02:00
0c54c8f885
[UI] Refresh the loaded panel when the URL fragment changes. 2023-10-18 03:00:53 +02:00
6289eb47ab
[Extensions UI] Added Actions and Events sections to Doc. 2023-10-18 03:00:53 +02:00
6383030e96
[Extensions UI] Added notifications in case of install errors. 2023-10-18 03:00:52 +02:00
3107df5eba
[UI Nav] Moved Extensions panel from the plugins list to the footer. 2023-10-18 03:00:52 +02:00
81e99a0e22
[shell] Better buffering for the output sent to websockets. 2023-10-18 03:00:52 +02:00
a652bd9df8
[Extensions UI] Install extensions deps from the UI.
- Added `Install` button
- Added interactive output panel
2023-10-18 03:00:52 +02:00
033317e0a7
[Extensions UI] Passing config_file to the configuration tab. 2023-10-18 03:00:51 +02:00
66cba233e5
[config] Added config.get_config_file action. 2023-10-18 03:00:51 +02:00
20a2203e7e
[Shell plugin] Added support for async output over websockets. 2023-10-18 03:00:51 +02:00
2806e943c3
[Extensions UI] Added Install tab. 2023-10-18 03:00:51 +02:00
e40a74f11c
Added install_cmds to the JSON representation of a manifest. 2023-10-18 03:00:50 +02:00
9769520e88
[UI] Use .min.css file for the Highlight.js styles. 2023-10-18 03:00:50 +02:00
3366732fa8
[UI] Expand Tab width on mobile. 2023-10-18 03:00:50 +02:00
12f7b190b9
[Automatic] Updated UI files 2023-10-16 00:30:42 +00:00
99e98f70f4
[Integrations UI] Added configuration tab. 2023-10-16 02:30:30 +02:00
b19725c72c
[Automatic] Updated UI files 2023-10-15 23:18:08 +00:00
398d64c53f
[Integrations UI] Added new Integrations panel. 2023-10-16 01:16:10 +02:00
0055acad9d
[UI] Fixed Autocomplete behaviour on empty filter. 2023-10-16 01:12:56 +02:00
c88a9da3e6
[UI] Refactored layout classes. 2023-10-16 01:12:05 +02:00
d1afb88b80
[Reflection] Expand RST extensions from object docstrings too. 2023-10-16 00:21:49 +02:00
0fe1c2768b
[Fix] Some minor docstring indentation fixes. 2023-10-16 00:20:39 +02:00
e242b2134e
[Automatic] Updated UI files 2023-10-14 12:38:25 +00:00
3cfd72b649
[UI Nav] Ensure that entities and execute tabs are always on top. 2023-10-14 14:38:08 +02:00
6d53a3f80f
[Automatic] Updated UI files 2023-10-14 12:09:13 +00:00
a3643c285e
[UI] A friendlier representation of an integration's name. 2023-10-14 14:02:17 +02:00
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
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
dbe19042bc
[Automatic] Updated UI files 2023-10-13 21:13:00 +00:00
891e05a219
[Execute UI] Added syntax highlight to JSON and shell snippets. 2023-10-13 23:12:04 +02:00
8b9ac59167
parse_numpy should also catch AttributeError. 2023-10-12 03:24:03 +02:00
12f38281e1
[Automatic] Updated UI files 2023-10-12 00:58:53 +00:00
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
0a13b4605e
[Execute panel] Procedures merged into actions.
Plus, a last big refactor/redesign for the panel's components.
2023-10-12 02:49:51 +02:00
e760f8e23a
[Execute panel] Introduced a common Response component. 2023-10-11 16:57:04 +02:00
b47e729012
[Execute panel] Added cURL snippet modal. 2023-10-11 16:38:38 +02:00
fc21e9740b
[Execute panel] Better rendering of responses and errors. 2023-10-11 15:28:49 +02:00
21820bb185
Big refactor of the Execute panel. 2023-10-11 14:31:46 +02:00
1b6e9b4df9
Fixed a broken docstring reference. 2023-10-10 22:18:36 +02:00
ff07623803
Auto-focus the first parameter after selecting an action. 2023-10-10 21:31:14 +02:00
07f0535504
Migrated Execute panel to the new Autocomplete widget. 2023-10-10 21:13:54 +02:00
a717235453
Added autofocus support to Autocomplete element. 2023-10-10 20:51:09 +02:00
923eb7cadb
Autocomplete is now its own component. 2023-10-10 18:42:41 +02:00
f6bf9438b9
Several improvements for the Execute panel. 2023-10-10 01:45:35 +02:00
434855ffdd
A better logic to process relative references in docstrings. 2023-10-10 01:35:37 +02:00
5726c6985f
Added utility function to get the defining class of a method. 2023-10-10 01:35:01 +02:00
2af304f478
Replaced radio buttons on the Execute panel with buttons. 2023-10-10 00:40:20 +02:00
84efef710e
Added Tabs and Tab UI elements. 2023-10-10 00:39:27 +02:00
0c818d3fe0
.. schema:: JSON arguments should be comma-separated. 2023-10-10 00:38:23 +02:00
b225b056b0
ParseContext should also process kwonlyargs. 2023-10-10 00:37:08 +02:00
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
1e93af86f4
Fixed some broken docstring references. 2023-10-09 01:33:45 +02:00
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
9acd71944c
Skip numpy types serialization errors on Message.Encoder. 2023-10-09 01:33:45 +02:00
e5a5ac5ffb
Added doc_url parameter to integration metadata. 2023-10-09 01:33:45 +02:00
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
608844ca0c
[WIP] Large refactor of the inspection plugin and models. 2023-10-09 01:33:44 +02:00
841643f3ff
Added cachedir to configuration. 2023-10-09 01:33:44 +02:00
40557f5d5d
Replaced one more occurrence of <type> | None syntax. 2023-10-09 01:33:44 +02:00
4da3c13976
First WIP commit for the new Integrations panel. 2023-10-09 01:33:44 +02:00
4d52fd35b9
Skip None responses in the RSS plugin. 2023-10-04 22:08:11 +02:00
40d3ad1150
Removed <type> | None type hints.
They break on Python < 3.10.
2023-10-03 01:15:13 +02:00
3086dd86fc
LINT+Black+stability fixes for some plugins that hadn't been touched in a while.
- media.mplayer
- media.omxplayer
- media.vlc
- music.mpd
- music.snapcast
2023-10-01 22:55:06 +02:00
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
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
966a6ce29e
httplib2 should be an explicit dependency for Google integrations.
Plus, some misc LINT/Black chores.
2023-10-01 00:52:59 +02:00
a7bb81553c
Regex fix. 2023-09-30 15:11:09 +02:00
9e489bb5cf
Propagate the default/required properties of a parameter upon merge. 2023-09-30 14:57:11 +02:00
1732bfa82c
Fixed _default_docstring regex. 2023-09-30 14:36:08 +02:00
532f5479b3
Added full YAML example for chat.irc configuration. 2023-09-30 14:34:54 +02:00
ecffbf29bf
Skip vararg/varkw parameters from the config snippet. 2023-09-30 13:53:33 +02:00
4f5ccda353
Better documentation for the calendar plugin. 2023-09-30 13:31:41 +02:00
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
15d06fa5c2
Improved docstring parser logic. 2023-09-30 12:35:31 +02:00
343972b520
New IntegrationMetadata generic util class.
This object is in charge of parsing all the metadata of a
plugin/backend.
2023-09-30 02:28:20 +02:00
905d6632e0
Misc documentation improvements. 2023-09-29 18:09:15 +02:00
0a3ec4b9f1
Merge branch 'master' into 311/auto-generate-deps-docs 2023-09-28 01:25:29 +02:00
b76f141b61
Catch response write errors in the MQTT callback.
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
ca7f042ccc
We shouldn't call dateutil.parser if t has already been deserialized to a datetime. 2023-09-27 11:20:10 +02:00
c311987741
Removed typing.Final from some of the most commonly used modules.
`typing.Final` is not defined on Python < 3.8.
2023-09-26 23:50:10 +02:00
9298f52443
Moved BluetoothPlugin to __init__.py.
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
c3337ccc6c
[#311] Docs deps autogen sphinx plugin.
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
059f7a4b11 Merge branch 'master' into 316/rpm-support 2023-09-23 16:21:48 +02:00
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
b797add90d
Modify shebang header for Mercury JS script.
The RPM build process wants an absolute path.
2023-09-23 16:16:13 +02:00
a872d6f554
Added Fedora to the available Docker base images. 2023-09-22 19:02:13 +02:00
79e24461cb
Coalesce to empty list if zigbee.mqtt.devices returns null. 2023-09-22 17:00:53 +02:00
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
761f2768cb
[#316] Added RPM dependencies. 2023-09-21 23:20:06 +02:00
453b6becae
FIX: We shouldn't expand cfgfile if it's empty. 2023-09-21 01:18:15 +02:00
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