- Configuration is now made with TOML, and the documentation was outdated. It has been
rewritten for TOML, and autodoc is used to show configuration options available in code
(and keep it up-to-date).
- New isolation mode is documentated.
- (core/constants): fix the `tmp` isolation mode to inherits the parent configuration like
`normal`.
Index is reorganised to have separated `content`, `developer` and `how-tos` sections.
The TUI documentation is temporarily disabled (as TUI is currently broken).
Add units for ``systemd`` to easily handle Libervia services on system-wide installation.
There is a service to run a single backend instance for all clients and components, and
another one if administrators prefer isolated instances. The latter one uses a systemd
template system.
- New ``-i``/``--isolation`` argument is added, it must be used before first positional
argument (i.e., first comamnd).
- The new `entry.py` module is now the entry point, so it can set the `LIBERVIA_ISOLATION`
environment variable before the backend read it.
- Add a 5s timeout on connection to avoid infinite hang when socket is not working.
- Raise `BridgeInitError` on time-out (needed to make `auto` bridge fallback correctly).
- add `--comments-from <item_id>` and `--comments-from-last` to automatically retrieve the
comments node of a blog post.
- ⚠️`--draft-path` short option moved from `-F` to `-d` (so `-F` can be used for
`--comments-from`).
- `set -i` was replacing all fields of any existing item, losing tags, attachments,
publication date, etc. It now fetches the existing item if any, and starts from its
data. `-r/--replace` can be used to force a full replacement (and avoid fetching old
item).
- `--attachment` uses `action="extend"` so multiple `-a` can be used.
- Fix attachement data key (`url` -> `sources`).
- Sign item requests with the service/node actor and use the publisher for `attributedTo`.
- http_server: add missing `requestor_actor_id` to all `ap_*_request` handlers.
- http_server: fix following acceptation in `handle_follow_activity`.
- http_server: unescape `%40` in `get_ap_actor_data` at the beginning and use
it everywhere.
- pubsub_service: delete subscription from storage on unsubscribe.
- Fix missing arguments in some calls.
- Fix various issues coming from conversion of data models to Pydantic.
- plugin XEP-0277: add `MbData.is_edit` property.
- `is_local`: now use `server_jid`.
- `aio_func`: pass the missing `self` argument (`aio_fund` is unbound).
- Declare `pubsub_service` in `core_types.SatXMPPEntity`
- plugin XEP-0277: fix handling of `MbData.from_element` when node is not specified (so we
use default node).
- plugin XEP-0346: `IdentityData`: fix field access, following move to Pydantic model.
- `css`: additional sheets rendered after the regular css files (can be used for a dark
theme)
- `html_data_theme`: copied to the <html> data-theme attribute
- `themes_items`: theme selector entries (theme, label, icon)
- fix missing parenthesis in `is_file`
Video thumbnails are now generated too (recursively, along with images) on the `thumb`
command. The poster frame is extracted at 25% of the duration (instead of a fixed 10s
seek).
Thumbnails are now kept in cache indefinitely.
`miniupnpc` raises `Exception("Success")` when no device is found
(instead of returning 0), which was resulting in an exception breaking workflows in
Libervia.
The code now catches unexpected exceptions, and handles `Exception("Success")` as "no
device found".
slight refactor of initialisation workflow, it's now split in two part, with
`self._send_jingle_after_accept` called in a deferred, so the session ID can be returned
early by the jingle application, and the session can be cancelled even if not fully
established (e.g. while ringing during a call).
The Jingle Audio/Video Conferences spec has been updated to work with a single Jingle
session. This patch updates the component to handle it, and implements ICE restart
management.
Closing is better handled, and session are replaced in case of duplication (happens
notably in web frontend on tab reload).
This plugin implements the Jingle A/V Conferences specification. The plugin is small as
it's mostly (only so far) about specifying/retrieving <origin> element, and disco info;
the rest is handled by other Jingle plugins.
When joining a room, it may be automatically added to bookmark (e.g. by other clients), so
we delete it when call end to be sure that we don't keep temporary rooms in bookmarks.
- all content actions are now handled
- XEP-0167: the new contents of an offered SDP are added with a single content-add, the
contents sharing a single transport are bundled (XEP-0338)
- XEP-0167: the generated SDP declares the BUNDLE group of its own contents
- XEP-0176: one transport-info IQ per content. ICE data are keyed by content names.
- fix session-level ICE attributes and fingerprint
- use the proper `urn:xmpp:jingle:muji:0` namespace
- replace XEP-0249 invitations with XEP-0482
- the dedicated `META_TYPE_GROUP_CALL` subtype is now used for the confirm action (instead
of `META_TYPE_MUC_INVITATION`)
- handle MUJI invitation: on accept, join the room, start preparing and answer with the
connection method element
- add the `<muji>` element to outgoing Jingle IQs
- propagate the call type (audio/video) in the MUJI invites (the `type` attribute), so the
invited clients set up the proper local stream
- the joining participant initiates the sessions with the other participants, using their
real JIDs, extracted from the presence (the room is set non-anonymous for that)
- only trust the `<muji>` element of a `session-initiate` from a member of the room
- add a `call_group_end` bridge method to clean the MUJI session
- typo fix in `META_TYPE_MUC_INVIRATION` (`R` instead of `T`)
The `set_room_configuration` allow to update configuration with well-known options.
The `is_jid_in_room` check if an entity with the given real JID is in the room.
PID of commands run with `CommandProtocol` are now tracked in memory and stopped/killed on
exit. A `pid_file` argument can be use to track the file on disk, which is useful to
detect stalled processes after a crash/unclean ending of the backend.
Add helper methods to stop and kill those processes.
Add the `li backup` commands with `export`, `import` and `verify`:
- data types selection (`-i`/`-e`) and profile selection (`-p`), `--no-db` on export, `--use-db` on
import
- GPG symmetric encryption of the archive (`--encrypt`)
- progression is shown, with ETA
- the commands can run without a backend connection (import from DB MUST be run without
backend)
- cli (base): `BRIDGELESS_COMMANDS` holds the name of the few commands which can be run
without backend.
rel 480