- 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`.
- 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`)
Normally the backend is made to have a singleton instance, and handle all profiles.
However, it may be useful to run instances independently (e.g., for development, to run
components in independent processes, for testing, etc).
This was previously possible by using a specific configuration files at backend's root.
This patch introduce a cleaner way by using an isolation mode.
Isolation mode is activated by settings the `LIBERVIA_ISOLATION` environment variable to
the name of the isolated instance. `LIBERVIA_ISOLATION_MODE` can be used to specify one of
the following mode:
- normal (default): config and shared files are in XDG in a `isolated/<name>` subdirectory
(usually `~/.local/share/libervia/isolated/<name>` and
`~/.config/libervia/isolated/<name>`). Runtime files and other instance specific data
(such as D-Bus name) are also isolated. Config uses cascade as usual.
- full: same as above, but config isn't cascading, it's using only its own isolated config
file.
- tmp: same as normal but the local directory is put in a temporary directory, and deleted
on backend startup. It stays on termination, so data can be checked if necessary (this mode is
usually used for development).
This feature will notably be useful to test severless mode on a single machine.
rel 479
XEP-0447 allow to send sources after the original message. Dino is doing that, and thus we
can't display attachment immediately with only the original message.
This patch handle that by updating the original message once the sources are received, and
emitting a `message_update` signal to notify frontends.
This patches add handling for unseen messages counter, and last message received. The
counters are retrieved from DB on startup, they updated in-memory. Frontend are expected
to have their own in-memory counter too, the backend one is used for re-sync (e.g.; on page
reload).
Bridge methods are added to retrieve the state, and indicate which message has been seen
last by user. A signal is sent on counter reset to all frontends can synchronise.
This is currently local only, but it should be compatible with a future XEP-0490 (Message
Displayed Synchronization) implementation.
- Error raised by `disco_info` where not properly handler, resulting in an exception
instead of appropriate logging and return value.
- `async` coroutines, type hints
Libervia Media is now a Python package instead of files to put in a directory to specify
in settings. The discovery is now automatic, removing the need for settings and enabling
easier installation. Furthermore, it should now work even if the package is zipped.
`libervia_media` can now be specified as a dependency for frontends requiring it.
This is a huge configuration refactoring.
The configuration system now uses Pydantic settings, with better validation, better
support for environment variables and other goodies.
The main config files now use TOML instead of INI, this allow for better handling of
complex types, notably dict.
Plugins, components and frontends can declare their config settings in a class which will
be imported dynamically.
this directory may be used to share files between backend and frontends. Normally, an
os-dependent temporary directory is created for that, but if this option is set, the
directory will be created in <local_dir>/<cache_dir>, which may be useful in some use case
(e.g. containerized frontends and backend).
This is an implementation of the protoXEP that will be submitted to XSF. It handle
establishment of a remote control session, and the management of A/V calls with XEP-0167.
rel 436
the `C.META_TYPE_FILE` can't be used in this case as it is a preflight and we don't have
yet data such as progress ID. `C.META_TYPE_FILE` is used as a sub-type to help with dialog
management in frontend.
default location of pid file is now specific to logged user, this allow to run several
instances of Libervia by different users on the same machine without PID conflicts.