Speakr v0.10.11-alpha
In this release, generated titles and other dates follow each user's timezone, every processing path runs the same steps, and API v1 has what an integration needs to stay in sync with Speakr: scoped tokens, a changes feed, search, external references, share links and signed webhooks for every edit. Renaming or merging speakers now updates every recording they appear in. Speakr also has a new icon.
Added
- Timezone for generated titles (#412). Dates in naming templates (
{{date}},{{datetime}},{{time}}), default titles, export filenames and Word downloads, and the dates given to the AI for summaries and events are written in each user's timezone. By default it is taken from the browser; a fixed timezone can be chosen in Account, Preferences. The administrator sets a default for accounts that only use the API or the watch folder; on an existing installation, aTIMEZONEvalue is used as the initial default. Stored dates and API responses stay UTC. Thanks to @yuriykosicin for the report. - Scoped API tokens. A token can be limited to scopes (read, write, upload, process, share, delete, webhooks, account) with the presets Read only, Integration, Recorder and Full access. Existing tokens keep full access. Scoped tokens work only in a header and only on API v1. Requests made with a token are rate-limited per token.
- API v1 for integrations.
- A changes feed (
/recordings/changes) with every create, edit and delete since a cursor, andupdated_aton every recording. - ETags on recording reads, so an unchanged read answers
304. - Search (
/search) over titles, participants, notes, summaries and transcripts, with time and speaker for each transcript hit. Semantic search is available through Inquire. - External references that link a recording to an item in another system, private to each user.
- Upload fields for participants and references, and an idempotency key for safe retries.
- Recordings shared with you (
scope=shared|all) on the list, the feed and search. - Setting a recording's tags in one call, and finding a tag by name.
- Speaker email and aliases.
- Share links with optional expiry.
- Chat answers with checked transcript citations, and a v1 Inquire route.
/tokens/currentand/capabilitiesfor feature discovery.
- A changes feed (
- Webhooks. A second signature header,
Speakr-Signature-V2, covers the send time, so receivers can refuse stale deliveries and still accept retries. A rotated secret stays valid for 24 hours. New events report share links created and revoked, and a webhook can be set to also receive the events of recordings shared with its owner. - Speaker links. Named speakers in a transcript are linked to the saved speaker. Existing transcripts are linked once at upgrade, through voice samples where they exist and otherwise by name.
- New icon. The paper-fold S, in the browser tab, the installed app and the header.
Changed
- Renaming and merging speakers. A merge in Speaker Management now shows the kept speaker's name in every recording of the merged speakers: transcript, participants and Inquire search. Before, those recordings kept the old names. Summaries keep the names they were written with until they are regenerated.
- Regenerate title runs the same title step as processing: the naming template of the recording's tag, then its folder, then your default. A title you typed is kept when a recording is processed again, and a merged recording without a typed title is titled like an upload (#412).
- One finishing step for every processing path. Status, shares, export, Inquire indexing and event extraction run the same way after an upload, a reprocess, a merge, the watch folder and the share target. Events are extracted without auto-summarization too.
- Shared recordings use the owner's settings. An editor's personal tags no longer change the summary prompt, transcription settings or naming template of a recording shared with them.
recording.updatedwebhooks now fire for edits made in the web app, a speaker rename, a merge and tag changes, not only forPATCHthrough the API. Receivers subscribed to it get more events, each withfields_changed.- Notes are per user in API v1. A user a recording is shared with reads and writes only their personal notes, in the notes route, the recording details and search.
- API v1 tag writes need edit access to the recording. A group tag that shares the recording also needs the
sharescope on a scoped token. - Event attendees in API v1 are objects (
name,email), and event times are marked as wall-clock times (floating). - Chat panel. One layout for every recording, anchored to the bottom-right of the content area.
- Header buttons have one size on phones and one height on wider screens, with even spacing around the logo.
Fixed
- The chat of a user a recording was shared with was given the owner's notes; it now gets the user's own notes.
- Renaming a speaker through API v1 failed.
- A recording with a typed title and auto-summarization off was never indexed for Inquire; with auto-summarization on and no AI model configured, a recording stayed in processing.
- A failed summary overwrote the transcript with the error message.
- The share target stored files outside the configured storage (for example S3) and skipped the duplicate check.
- Sidebar date groups, search date filters, Inquire date filters and the last day of a date range used inconsistent timezones; the Inquire filter list could show "Invalid Date".
- A date-only meeting date edit lost the time of day; dates from the watch folder and file times were stored in server time.
- Calendar files had no UTC timestamp, invented attendee addresses, and long lines were not folded.
- Filename dates used the current daylight-saving offset instead of the offset on the file's date.
Upgrading
Pull the new image and start as usual. The database is updated at startup: new columns and tables, a one-time updated_at backfill, and a one-time pass that links transcript speakers to saved speakers. Both one-time steps run once and do not change titles, summaries or webhooks.
- Export filenames that contain a date may change on the next export, because the date is now in your timezone.
- Receivers of
recording.updatedwebhooks get events for web edits too. - API v1 clients that read event attendees as strings, or let a view-only recipient add tags, need to be updated.
New optional settings: API_TOKEN_RATE_LIMIT_READ, API_TOKEN_RATE_LIMIT_WRITE, API_TOKEN_RATE_LIMIT_PROCESS, API_SEARCH_RATE_LIMIT, MODELS_ARE_LOCAL, RECORDING_TOMBSTONE_DAYS and WEBHOOK_SECRET_GRACE_HOURS. See the API reference and the webhooks guide.
Full Changelog: v0.10.10-alpha...v0.10.11-alpha