[0.2.0] - 2026-04-28
Changed
- Self-host install now uses published Docker images instead of
git clone. See README and BRANCHING.md. Existinggit pull && docker compose up --buildsetups keep working. - Docker tag
:latestnow tracks the newest stable release (previously trackedmain). New:devtag tracksmainfor bleeding-edge users.
Added
BRANCHING.md— branching and release model.docker-compose.dev.yml— overlay for building the image from local source.OPENPLAUD_VERSIONenv var for pinning the image tag.- GitHub Releases attach
docker-compose.ymland.env.exampleas install artifacts.
Security
- Added comprehensive error handling system with safe error messages
- Implemented path traversal protection in local storage
- Fixed environment variable client-side exposure
- Added sensitive information sanitization in error responses
Fixed
- Fixed storage type bug (was hardcoded to "local")
- Fixed device lookup to properly scope by userId
- Fixed race condition in default provider selection with transactions
- Added audio streaming range validation (416 Range Not Satisfiable)
- Improved content-type detection for multiple audio formats
Added
- Database unique constraint on plaudDevices (userId + serialNumber)
- Performance indexes on recordings, transcriptions, and plaudDevices tables
- Retry logic for Plaud API calls with exponential backoff
- Standardized error code system for client error handling
- Test and type-check scripts in package.json
Full changelog: CHANGELOG.md
Install: see docker-compose.yml and env.example attached below, or follow README → Quick Start.