Skip to content

v3.3.0 — Dashboard Audio Playback & ActiveStorage Support

Choose a tag to compare

@adham90 adham90 released this 17 Feb 13:26
· 178 commits to main since this release

What's New

Dashboard Audio Player

Speaker and Narrator execution detail pages now display an HTML5 <audio> player when audio data is available. The player shows metadata including duration, format, file size, voice, and provider — no JavaScript dependencies needed.

persist_audio_data Configuration

New opt-in setting to store TTS-generated audio as base64 data URIs in execution_details.response:

RubyLLM::Agents.configure do |config|
  config.persist_audio_data = true
end

Default: false (audio binary can be 300KB–1MB+ per execution). When disabled, the player still works if audio_url is present from ActiveStorage or external storage.

Audio URL Auto-Persistence

audio_url from SpeechResult is always stored in execution details (it's just a string, no binary), enabling playback from ActiveStorage or external URLs without enabling persist_audio_data.

ActiveStorage Support for Speaker

New Speaker::ActiveStorageSupport module for attaching generated audio to ActiveStorage.

SpeechResult API Changes

  • audio_url, audio_key, audio_path changed from attr_reader to attr_accessor for post-creation URL assignment (e.g., after ActiveStorage upload)
  • content_type and mime_type_for_format are now public methods

Full Changelog

https://github.com/adham90/ruby_llm-agents/blob/main/CHANGELOG.md

Full Changelog: v3.2.0...v3.3.0