Speakr v0.10.22-alpha
In this release, each single sign-on app can be given its own scope limit, notifications are shown in the interface theme, and several gaps in sharing, failure notices and layout are closed.
New
- Token exchange refusals. For a valid SSO access token,
POST /api/v1/tokens/exchangeanswers 403sso_registration_closedwhen the person has no Speakr account, and 409sso_link_requiredwhen a Speakr account with the same email is not yet linked to single sign-on. In both cases, the person signs in to Speakr with SSO once. A request with an invalid token still receives 401, and other API routes still answer every refusal with 401. - Exchange status without a token.
GET /api/v1/sso/statusreports whether the token exchange is available and, withclient_id, whether that client may exchange. No other information is returned. - Scopes per app. With
sso_api_client_scopes, each client can be given its own scope limit withinsso_api_scopes, for examplereadfor an assistant tool server such as Open WebUI andread write upload share webhooksfor an app that syncs in the background. - App names on tokens. With
sso_api_client_names, a client id can be given a display name, and an exchanged token is listed as "Created through SSO by" that name.GET /api/v1/tokens/currentand token objects includesso_client_idandsso_client_name. - Times on recent tokens. In Account settings → API tokens, dates within the last seven days show the time, and every date shows the full date and time on hover.
Changed
- Toasts. Notifications are shown in the interface theme, with a colored icon and an accent strip per type, and all text meets AA contrast in light and dark mode. Error notifications stay until they are closed, warnings stay at least eight seconds, and hovering pauses them. Every notification has a close button, and a repeated message shows a count in place of a second notification. They are announced by screen readers, and on phones they are shown full width above the player.
- Tablet header. Between 641 and 1279 px, the recording header fits in every theme. Below 1024 px, the inbox, star, archive, folder, tags and speaker actions are in the More menu, and below 1280 px the Ask Ambrose and New recording buttons show icons only.
- Portrait videos on phones. A portrait video in the player is limited in height and shown whole, so the player controls and the transcript stay in view. Landscape videos are unchanged.
Fixed
- Tag group changes. When a tag is made a group tag, moved to another group or made personal again, its completed recordings are shared with the new group according to the tag's sharing settings, and the previous group's tag shares end. Shares made by hand, and access still given by another group tag or folder, are kept.
- Failure notices. For a transcription that returns no text, and for a transcription stopped by the transcription budget, one
recording.transcription.failedwebhook is sent and, to users who turned on processing emails, one failure email. Since v0.10.21, no notice was sent in either case. - WebM audio in the watch folder.
.webafiles are taken from the watch folder and handled like.webmfiles at upload. A watch folder file skipped because of its extension is noted once in the log.
Upgrading
Pull the new image and start as usual. Two settings are added at startup without a value, so nothing changes until an admin sets them: sso_api_client_scopes and sso_api_client_names, with the .env variables SSO_API_CLIENT_SCOPES and SSO_API_CLIENT_NAMES. No database columns are added.
A few changes are visible to administrators and API clients:
- Token exchange. A valid SSO token for a person without a Speakr account now receives 403
sso_registration_closedor 409sso_link_requiredfromPOST /api/v1/tokens/exchange, not 401. Other routes are unchanged. - Webhooks.
recording.transcription.failedis now sent for an empty transcript and for a transcription stopped by the budget. - Tokens.
GET /api/v1/tokens/currentand token objects includesso_client_idandsso_client_name. - Going back to v0.10.21. The new settings are ignored.
Full Changelog: v0.10.21-alpha...v0.10.22-alpha