https://widget.joinsayless.com if you self-host.
Standard install
connect-src to the widget origin. You do not need style-src 'unsafe-inline' for the launcher: it uses a closed shadow root and a constructable stylesheet.
SRI install
The hashed loader fetches config from the widget origin:Frame lock
The iframe setsframe-ancestors to the origins saved on the widget. A page that is not in Allowed domains will not paint the panel.
Identity tokens are posted from the iframe, not from the host page, so host connect-src is not required for JWT exchange.