pub(crate) async fn audio_history_save(
samples: Vec<AudioSample>,
roots: Option<Vec<String>>,
) -> Result<AudioScanSnapshot, String>pub(crate) async fn audio_history_save(
samples: Vec<AudioSample>,
roots: Option<Vec<String>>,
) -> Result<AudioScanSnapshot, String>