* Publish embedded package for releases of Element Call Part of https://github.com/element-hq/element-call/issues/2994 This PR: - Publishes embedded builds as Tarball, NPM, AAR, SwiftPM for releases - Publishes full builds as Tarball for releases - Adds comments to release notes with the built artifact locations * Update embedded/web/package.json Co-authored-by: Michael Telatynski <7t3chguy@gmail.com> * Update .github/workflows/publish-embedded-packages.yaml * Update embedded/ios/Package.swift * Apply suggestions from code review * Try dry-run of gradlew * Whitespace * Fix more instances of unpinned GHA * Minimise permissions * Upload release notes once To reduce concurrency * Fix npm publish permissions --------- Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
2.5 KiB
Element Call packages
Element Call is available as two different packages: Full Package and Embedded Package. The Full Package is designed for standalone use, while the Embedded Package is designed for widget mode only. The table below provides a comparison of the two packages:
| Full Package | Embedded Package | |
|---|---|---|
| Supports use as standalone | ✅ | ❌ |
| Supports use as widget | ✅ | ✅ |
| Deployment mode | Hosted as a static web page and accessed via a URL when used as a widget | Bundled within a messenger app for seamless integration |
| Release artifacts | Docker Image, Tarball | Tarball, NPM for Web, Android AAR, SwiftPM for iOS |
| Recommended for | Standalone/guest access usage | Embedding within messenger apps |
For examples of how to use the platform specific release artifacts (e.g. Android AAR) see the Element Messenger apps for: Web, iOS and Android.
Widget vs standalone mode
Element Call is developed using the js-sdk with matroska mode. This means the app can run either as a standalone app directly connected to a homeserver providing login interfaces or it can be used as a widget within a Matrix client.
As a widget, the app only uses the core calling (MatrixRTC) parts. The rest (authentication, sending events, getting room state updates about calls) is done by the hosting client. Element Call and the hosting client are connected via the widget API.
Element Call detects that it is run as a widget if a widgetId is defined in the url parameters. If widgetId is present then Element Call will try to connect to the client via the widget postMessage API using the parameters provided in Url Format and parameters
.