github murtaza-nasir/speakr v0.9.2-alpha
v0.9.2-alpha — Local / S3 storage backend

latest release: v0.9.3-alpha
4 hours ago

Release Notes - v0.9.2-alpha

This release adds a pluggable storage backend so Speakr can keep recording audio in S3-compatible object storage (AWS S3, MinIO, Backblaze B2, Cloudflare R2, Wasabi) instead of, or alongside, the local filesystem. Local storage remains the default, so existing deployments are unaffected until they opt in.

Dual Local / S3 Storage Backend

  • Configurable backend. Set FILE_STORAGE_BACKEND=local (default) or s3. The S3 path works with AWS S3 and any S3-compatible service (MinIO, Backblaze B2, Cloudflare R2, Wasabi) via S3_BUCKET_NAME, S3_ENDPOINT_URL, credentials, region, and path-style / SSL toggles for self-hosted endpoints.
  • Presigned delivery. In S3 mode, audio is served to the browser through short-lived presigned URLs straight from the object store rather than streamed through the app, with separate expiry for owner playback and public share links.
  • Storage locators. Recordings now reference audio by locator (local://… / s3://…) instead of a raw filesystem path, with transparent fallback for pre-existing local paths, so upgrading needs no data migration.
  • Migrate existing audio. scripts/migrate_local_recordings_to_s3.py moves local recordings into a bucket and updates their locators, with --dry-run, size verification, and optional source deletion. Companion scripts normalize legacy local paths and backfill cached audio durations.
  • Duration caching. Audio duration is cached at upload and after transcription, so list and detail views never have to materialize remote audio just to render.

This feature was contributed by @Daabramov (#268) and ported onto the current codebase for this release.

Compatibility

Backwards compatible. FILE_STORAGE_BACKEND defaults to local, so existing deployments behave exactly as before with no configuration or data changes. Database migrations run automatically on startup. Upgrade with the usual docker compose pull && docker compose up -d.

Don't miss a new speakr release

NewReleases is sending notifications on new releases.