Skip to content

fix(deps): update all non-major dependencies - #4

Merged
krabhi4 merged 3 commits into
mainfrom
renovate/all-minor-patch
Nov 7, 2026
Merged

krabhi4 merged 3 commits into
mainfrom
renovate/all-minor-patch

Conversation

@krabhi4

@krabhi4 krabhi4 commented Nov 6, 2026

Copy link
Copy Markdown
Owner

Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Type Update Change
aes-gcm dependencies minor 0.10 → 0.11.1
anyhow dependencies patch 1 → 1.0.104
base64 dependencies minor 0.22 → 0.23.1
clap dependencies minor 4 → 4.6.7
cpal dependencies minor 0.15 → 0.18.2
crossterm dependencies minor 0.28 → 0.29.0
dirs dependencies patch 5 → 5.0.1
hex dependencies patch 0.4 → 0.4.3
hostname dependencies patch 0.4 → 0.4.2
md-5 dependencies minor 0.10 → 0.11.0
pbkdf2 (source) dependencies minor 0.12 → 0.13.0
ratatui (source) dependencies minor 0.29 → 0.30.2
reqwest dependencies minor 0.12 → 0.13.5
rubato dependencies minor 0.15 → 0.16.2
serde (source) dependencies patch 1 → 1.0.229
serde_json dependencies patch 1 → 1.0.154
sha2 dependencies minor 0.10 → 0.11.1
symphonia dependencies minor 0.5 → 0.6.1
tempfile (source) dev-dependencies minor 3 → 3.27.0
thiserror dependencies patch 2 → 2.0.21
tokio (source) dependencies minor 1 → 1.54.1
unicode-width dependencies patch 0.2 → 0.2.3

Release Notes

RustCrypto/AEADs (aes-gcm)

v0.11.1

Compare Source

v0.11.0

Compare Source

dtolnay/anyhow (anyhow)

v1.0.104

Compare Source

  • Update syn dev-dependency to version 3

v1.0.103

Compare Source

  • Fix Stacked Borrows violation (UB) in Error::downcast_mut (#​451, #​452)
marshallpierce/rust-base64 (base64)

v0.23.1

Compare Source

  • Make the tests build again on non-SIMD architectures

v0.23.0

Compare Source

  • Added more consts for preconfigured configs and engines
  • Make DecodeError::InvalidLastSymbol more clear by including the decoded value
  • Added SIMD-accelerated engines behind the default-on simd-unsafe feature: Simd picks the best
    instruction set at runtime (AVX2 on x86_64, NEON on aarch64) and falls back to the scalar
    GeneralPurpose engine, while Avx2 and Neon target one instruction set with no runtime
    detection and work in no_std. The engines support the standard and URL-safe alphabets.
  • Update MSRV to 1.71.0
  • Add support for custom padding symbols
clap-rs/clap (clap)

v4.6.7

Compare Source

Features
  • (derive) Add #[command(defer = <bool>)] attribute to opt-in to lazy initialisation of subcommands

v4.6.6

Compare Source

Features
  • Add Command::get_overridden_usage

v4.6.5

Compare Source

Fixes
  • (help) Correctly mark which value_names are optional with num_args

v4.6.4

Compare Source

Internal
  • Update to syn v3

v4.6.3

Compare Source

Fixes
  • (derive) Allow "literal".function() as attribute values

v4.6.2

Compare Source

Fixes
  • (help) Say alias when there is only one

v4.6.1

Compare Source

Fixes
  • (derive) Ensure rebuilds happen when an read env variable is changed

v4.6.0

Compare Source

Compatibility
  • Update MSRV to 1.85

v4.5.61

Compare Source

Internal
  • Update dependencies
RustAudio/cpal (cpal)

v0.18.2

Compare Source

Added
  • AAudio: Xruns are now reported as ErrorKind::Xrun.
  • CoreAudio: Xruns are now reported as ErrorKind::Xrun.
  • PipeWire: Xruns are now reported as ErrorKind::Xrun.
  • WASAPI: Capture xruns are now reported as ErrorKind::Xrun.
Changed
  • BSD: Clarify that realtime-dbus has no effect there.
  • CoreAudio: Bump objc2-core-foundation dependency lower bound to 0.3.1.
  • iOS: Timestamps now include hardware latency and update when the audio route changes.
  • JACK: Timestamps now include port latency.
  • Linux: Clarify that realtime alone is a no-op without realtime-dbus.
  • PipeWire: Devices with multiple ports now get distinct, localized, per-port names.
  • WASAPI: The windows and windows-core dependencies are now both pinned to 0.62.
Fixed
  • Timestamps now stay monotonic across device and graph changes.
  • ALSA: A nonzero but sub-millisecond stream timeout is no longer treated as a non-blocking poll.
  • ALSA: Fix compilation on FreeBSD, DragonFly, and NetBSD.
  • ASIO: Fix duplex streams silently dropping audio when built from separate Device handles.
  • AudioWorklet: Fix Stream operations to work when called from any thread.
  • AudioWorklet: Fix stale audio output when a data callback wrote a partial buffer.
  • CoreAudio: Default-output streams now report xrun status.
  • CoreAudio: Fix stale audio output when a data callback wrote a partial buffer.
  • iOS: Streams now resume automatically when an audio session interruption ends.
  • JACK: Streams with more channels than physical system ports no longer fail to build.
  • JACK: Channel enumeration is no longer capped at the physical system port count.
  • JACK: Device::id no longer embeds the process ID, so DeviceId is now stable across application restarts.
  • PipeWire: Fix streams starting audio before play() is called.
  • PipeWire: Fix rtkit burst limit errors from repeated real-time promotion on quantum jitter.
  • PipeWire: Fix real-time promotion blocking the audio callback thread on Linux.
  • PipeWire: Fix 24-bit sample format mapping.
  • PipeWire: Nodes with an /Internal media class are now enumerated as devices.
  • PipeWire: Streams for a specific device no longer auto-reroute if it disappears.
  • PipeWire: Build on 32-bit targets without native 64-bit atomics.
  • PulseAudio: NoData errors are no longer misreported as buffer xruns.
  • PulseAudio: Build on 32-bit targets without native 64-bit atomics.
  • visionOS: The CoreAudio backend now builds.
  • WASAPI: Default device changes no longer report DeviceChanged, which wrongly implied the stream had rerouted automatically.
  • WASAPI: Reported buffer sizes are no longer off by one frame.
  • WASAPI: Stream::drop, play, and pause no longer panic when the device is lost.
  • WASAPI: Capture streams no longer report a spurious xrun on the first buffer after starting.
  • WASAPI: Output streams no longer reject formats that the built-in resampler can convert.
  • WASAPI: Fix 24-bit samples not being packed into the upper bits of their sample container.
  • WebAudio: Fix stale audio output when a data callback wrote a partial buffer.
  • WebAudio: Fix unsound Send + Sync on Stream when compiled with +atomics.
  • WebAudio: Fix Host::is_available() always returning true, even in non-window contexts.

v0.18.1

Compare Source

Fixed
  • Exclude pipewire from the docs.rs build; system dependency not available in its environment.
  • Fix wasm-bindgen causing compile errors on non-browser wasm32 targets such as wasm32-wasip1.

v0.18.0

Compare Source

Added
  • New ErrorKind variants for the unified error type: BackendError (platform error without a
    specific mapping); DeviceBusy (retryable device access, e.g. EBUSY/EAGAIN); DeviceChanged
    (audio route changed to another device); InvalidInput (invalid caller-supplied values);
    PermissionDenied (OS-level access denial); RealtimeDenied (real-time scheduling refused —
    previously only printed to stderr); ResourceExhausted (OS thread/memory limits);
    UnsupportedOperation (backend or device does not implement the operation).
  • Device now implements PartialEq, Eq, Hash, Display, and Debug on all backends.
  • realtime feature for real-time audio thread scheduling without a D-Bus build dependency.
  • StreamTrait::now() to query the current instant on the stream's clock.
  • StreamTrait::buffer_size() to query the stream's current buffer size in frames per callback.
  • SAMPLE_RATE_CD (44100 Hz) and SAMPLE_RATE_48K (48000 Hz) constants.
  • SupportedStreamConfigRange::try_with_standard_sample_rate() and with_standard_sample_rate()
    to select 48 kHz or 44.1 kHz from a range.
  • SupportedStreamConfigRange::contains_rate() to test whether a sample rate falls within a range.
  • StreamConfig and SupportedStreamConfig now implement Copy.
  • BufferSize now implements Default (returns BufferSize::Default).
  • SupportedBufferSize now implements Default (returns SupportedBufferSize::Unknown).
  • HostTrait::device_by_id() is now backend-dispatched, allowing each host to override the
    default implementation.
  • DSD512 sample rates added to the common rate probe list.
  • AAudio: Streams now request PERFORMANCE_MODE_LOW_LATENCY with the realtime feature;
    reports ErrorKind::RealtimeDenied if not granted.
  • ALSA: device_by_id() now accepts PCM shorthand names such as hw:0,0 and plughw:foo.
  • CoreAudio: tvOS target support (Tier 3, requires nightly).
  • PipeWire: New host for Linux and BSD via the native PipeWire API.
  • PulseAudio: New host for Linux and BSD via the PulseAudio API.
  • WASAPI: F64 sample format support.
Changed
  • Changed per-operation error types (DevicesError, SupportedStreamConfigsError, etc.) and
    HostUnavailable into a unified Error/ErrorKind. See UPGRADING.md.
  • DeviceTrait now requires PartialEq + Eq + Hash + Debug + Display with a stable device ID.
  • DeviceTrait::build_*_stream() now takes StreamConfig by value instead of &StreamConfig.
  • StreamInstant API changed and extended to mirror std::time::Instant/Duration. See
    UPGRADING.md for migration details.
  • Streams no longer start automatically on build_*_stream(); call play() explicitly.
    Previously ALSA, CoreAudio, and JACK auto-started streams on creation.
  • Default output and input configs now prefer 48 kHz, then 44.1 kHz, then the device maximum.
    Previously the preferred rate was backend-dependent (typically 44.1 kHz or device maximum).
  • SupportedStreamConfigRange::cmp_default_heuristics now ranks all SampleFormat variants;
    F32 > F64 > descending integer widths. Default configs may now return I32 or I24 on
    high-precision hardware. See UPGRADING.md.
  • Bump MSRV to 1.85.
  • DeviceId fields are now private; construct with DeviceId::new(host, id) and access with
    .host() / .id(). See UPGRADING.md.
  • audio_thread_priority feature renamed to realtime-dbus.
  • DeviceDescription::extended() now returns impl Iterator<Item = &str> instead of &[String].
    See UPGRADING.md.
  • HostId::name() now returns a more human-friendly name.
  • DeviceDescriptionBuilder setters now accept impl AsRef<str> instead of impl Into<String>.
  • AAudio: Channel enumeration extended to 8 channels.
  • AAudio: Buffers with default sizes are now dynamically tuned.
  • AAudio: SupportedBufferSize in enumeration is now Unknown.
  • AAudio: Device names now include the device type suffix (e.g. Speaker (Builtin Speaker)).
  • AAudio: supported_input_configs() and supported_output_configs() now return an error for
    direction-mismatched devices instead of silently returning an empty list.
  • ALSA: Stream error callback now receives ErrorKind::DeviceNotAvailable on device
    disconnection.
  • ALSA: Callback timestamps use LinkSynchronized hardware cross-timestamps for lower jitter
    on supported devices.
  • ALSA: Try to resume from hardware after a system suspend.
  • ALSA: Loop partial reads and writes to completion.
  • ALSA: Polling errors trigger underrun recovery instead of looping.
  • ALSA: Prevent reentrancy issues with non-reentrant plugins and devices.
  • ALSA: Supported configurations are now enumerated up to 64 channels (AES10 maximum).
  • ALSA: The realtime feature now skips RT promotion for ineligible PCM types (null,
    I/O plugins, wrapper types).
  • ASIO: Timestamps now include driver-reported hardware latency.
  • ASIO: Stream error callback now receives ErrorKind::StreamInvalidated on
    kAsioResyncRequest or a sample rate change of 1 Hz or more from the configured rate.
  • ASIO: Hardware latency is re-queried when the driver reports kAsioLatenciesChanged.
  • ASIO: Device::driver, asio_streams, and current_callback_flag are no longer pub.
  • AudioWorklet: BufferSize::Fixed now sets renderSizeHint on the AudioContext.
  • AudioWorklet: Sample rates now enumerated as discrete standard rates in the spec-required
    range of 3-768 kHz.
  • CoreAudio: Timestamps now include device latency and safety offset.
  • CoreAudio: Physical stream format is now set directly on the hardware device.
  • CoreAudio: Stream error callback now receives ErrorKind::StreamInvalidated on any sample
    rate change on macOS, and on iOS on route changes that require a stream rebuild.
  • CoreAudio: Stream error callback now receives ErrorKind::DeviceNotAvailable on iOS
    when media services are lost.
  • CoreAudio: Stream error callback now receives ErrorKind::DeviceChanged when the system
    default output device changes, or on iOS when headphones are unplugged.
  • CoreAudio: User timeouts are now respected when building a stream.
  • CoreAudio (iOS): default_output_config() now prefers stereo over the maximum channel count.
  • JACK: Timestamps now use the precise hardware deadline.
  • JACK: Stream error callback now receives ErrorKind::DeviceNotAvailable on server shutdown.
  • JACK: Stream error callback now receives ErrorKind::RealtimeDenied once if the process
    callback is not running at real-time scheduling priority.
  • JACK: Stream::connect_to_system_outputs() and connect_to_system_inputs() now return
    Result<(), Error> and roll back the port graph on failure.
  • JACK: User timeouts are now respected when building a stream.
  • JACK: Buffer size changes no longer invoke the error callback; internal buffers are resized
    transparently.
  • JACK: Default client name now includes the process PID.
  • Linux/BSD: Default host priority: PipeWire > PulseAudio > ALSA.
  • WASAPI: Default output and input streams now automatically reroute when the system default
    device changes; stream error callback receives ErrorKind::DeviceChanged.
  • WASAPI: Timestamps now include hardware pipeline latency.
  • WASAPI: FriendlyName is now preferred as device name over DeviceDesc.
  • WASAPI: Device::immdevice() now returns Option<Audio::IMMDevice>.
  • WASAPI: Raise windows dependency lower bound to 0.61.
  • WebAudio: Timestamps now include base and output latency.
  • WebAudio: Initial buffer scheduling offset now scales with buffer duration.
  • WebAudio: Sample rates now enumerated as discrete standard rates in the spec-required
    range of 3-768 kHz.
Removed
  • StreamInstant::add() and sub() replaced by checked_add()/+ and checked_sub()/-.
  • Removed deprecated DeviceTrait::name().
  • ALSA: Default implementation for Device.
  • ALSA: AlsaHost is no longer re-exported from cpal::platform.
  • Emscripten: Removed broken host; use the WebAudio host instead.
  • WASAPI: Removed U24 incorrectly listed as a supported sample format.
Fixed
  • channels: 0, sample_rate: 0, or BufferSize::Fixed(0) now return ErrorKind::InvalidInput
    consistently across all backends (previously UnsupportedConfig or a panic).
  • Output buffers are now zero-filled before the callback runs across all backends.
  • Poisoned mutex guards now return ErrorKind::StreamInvalidated instead of panicking (AAudio,
    ASIO, CoreAudio, JACK, WASAPI).
  • Fix callbacks firing before build_*_stream returns the Stream handle (ALSA, ASIO, WASAPI).
  • Fix buffer_capacity_in_frames integer overflow for large fixed buffer sizes (AAudio, ALSA).
  • Fix numeric overflows when constructing StreamInstant (ASIO, CoreAudio, JACK).
  • AAudio: Fix panic in device configuration enumeration for pathological channel counts.
  • AAudio: Fix thread lock when a stream is dropped before it fully starts.
  • AAudio: Fix capture and playback timestamps not accounting for audio pipeline buffer depth,
    and falling back to zero on error.
  • AAudio: Fix sample_rate values above i32::MAX panicking.
  • AAudio: Fix stream errors not forwarded to error_callback.
  • AAudio: Return ErrorKind::BackendError instead of panicking on sample count overflow in
    the data callback.
  • ALSA: Fix capture stream hanging or spinning on overruns.
  • ALSA: Fix timestamps stepping backward during startup or after xrun recovery.
  • ALSA: Fix spurious timestamp and timeout errors during stream startup and polling.
  • ALSA: Fix rare panics when dropping the stream is interrupted.
  • ALSA: Fix timestamp overflows on 32-bit platforms.
  • ALSA: Fix silence template not applied for DSD.
  • ALSA: Fix stream corruption on certain drivers with spurious wakeups.
  • ALSA: Fix hang when a device raced to an error state without delivering POLLERR.
  • ALSA: Fix supported_configs() reporting buffer size instead of period size, using the same
    buffer range for all formats/channels, and dropping sample rates outside COMMON_SAMPLE_RATES.
  • ALSA: Fix BufferSize::Fixed validation opening the PCM device a second time.
  • ALSA: Fix poll timeout overflow panic for stream durations exceeding ~24 days.
  • ALSA: Fix build_*_stream_raw returning UnsupportedConfig instead of UnsupportedOperation
    for direction-mismatched devices.
  • ASIO: Fix enumeration returning only the first device when using collect().
  • ASIO: Fix device enumeration and stream creation failing from spawned threads.
  • ASIO: Fix buffer size not resizing on kAsioBufferSizeChange.
  • ASIO: Fix latency not updating on kAsioLatenciesChanged.
  • ASIO: Fix distortion when buggy drivers fire the buffer callback multiple times per cycle.
  • ASIO: Fix poisoned callback and buffer-size-change mutexes silently dropping notifications.
  • ASIO: Fix driver.sample_rate() failures at stream creation silently ignored.
  • ASIO: Fix overrun not reported when the driver reports kAsioOverload.
  • ASIO: Fix BufferSize::Fixed with a size not aligned to the driver's step constraint not
    returning ErrorKind::UnsupportedConfig.
  • AudioWorklet: Fix default_output_device() returning non-None when AudioWorklet is
    unavailable.
  • AudioWorklet: Fix channel count silently clamped below destination.maxChannelCount.
  • AudioWorklet: Fix supported_output_configs() reporting FrameCount::MAX as the buffer
    size upper bound (correct: floor(6 * sample_rate) per spec).
  • AudioWorklet: Fix supported_output_configs() reporting 128 as the minimum render quantum
    when renderQuantumSize is supported (spec minimum is 1).
  • CoreAudio: Fix default output streams silently stopping when the system default device is
    unplugged; they now reroute or report ErrorKind::DeviceNotAvailable.
  • CoreAudio: Fix undefined behavior and silent failure in loopback device creation.
  • CoreAudio: Fix loopback aggregate device UID collisions between concurrent instances and
    after crashes.
  • CoreAudio: Fix loopback capture returning silence due to disabled tap auto-start.
  • CoreAudio: Fix crashes on certain drivers due to early initialization.
  • CoreAudio: Fix supported_output/input_configs() collapsing non-continuous hardware rates
    into a continuous range (regression since v0.17.0).
  • CoreAudio: Fix BufferSize::Fixed producing cryptic backend errors when not validated
    against the hardware buffer range.
  • CoreAudio (iOS): Fix BufferSize::Fixed not validated against the supported range before
    stream creation.
  • JACK: Fix input capture timestamp using callback execution time instead of cycle start.
  • JACK: Fix poisoned error callback mutex silently dropping subsequent error notifications.
  • JACK: Fix port registration failure not propagating to stream creation.
  • JACK: Fix activate_async() failure panicking instead of returning an error.
  • JACK: Fix sample rate not validated against the live JACK server at stream creation.
  • JACK: Fix underrun notification blocking the notification thread.
  • JACK: Fix supported_input/output_configs() reporting a hardcoded sparse channel list
    instead of enumerating all counts up to physical system ports.
  • PipeWire: Fix channels: 0 or sample_rate: 0 silently using PipeWire-negotiated values
    instead of returning ErrorKind::InvalidInput.
  • PulseAudio: Fix supported_output_configs() and default_output_config() not accounting
    for PulseAudio's double-buffer.
  • WASAPI: Fix audio worker thread spawn failure panicking instead of returning an error.
  • WASAPI: Fix Communications-class inputs returning non-silence.
  • WASAPI: Fix supported_input_configs() advertising unsupported sample rates on input
    devices.
  • WASAPI: Fix sample_rate: 0 with BufferSize::Fixed causing a divide-by-zero panic.
  • WASAPI: Fix supported_input/output_configs() and default_input/output_config() reporting
    an unconstrained buffer range on software audio stacks.
  • WASAPI: Fix I24 not enumerated and 24-bit devices misidentified as I32.
  • WebAudio: Fix overflow with pathological channel counts.
  • WebAudio: Fix duplicated callbacks on repeated play() calls.
  • WebAudio: Fix errors panicking instead of being reported through the callback.
  • WebAudio: Fix default_output_device() returning Some when WebAudio is unavailable.
  • WebAudio: Fix channel count silently clamped when exceeding destination.maxChannelCount.

v0.17.3

Compare Source

Changed
  • Reverted SemVer-breaking DeviceBusy error variant addition.
Fixed
  • ASIO: Fix linker errors.

v0.17.2

Compare Source

Added
  • DeviceBusy error variant for retriable device access errors (EBUSY, EAGAIN).
  • ALSA: Debug implementations for Host, Device, Stream, and internal types.
  • ALSA: Example demonstrating ALSA error suppression during enumeration.
  • ALSA: Support for native DSD playback.
  • WASAPI: Enable as-necessary resampling in the WASAPI server process.
Changed
  • Bump overall MSRV to 1.78.
  • ALSA: Update alsa dependency to 0.11.
  • ALSA: Bump MSRV to 1.82.
  • CoreAudio: Update core-audio-rs dependency to 0.14.
Fixed
  • ALSA: Enumerating input and output devices no longer interferes with each other.
  • ALSA: Device handles are no longer exclusively held between operations.
  • ALSA: Reduce Valgrind memory leak reports from ALSA global configuration cache.
  • ALSA: Fix possible race condition on drop.
  • ALSA: Fix audio callback stalling when start threshold is not met.

v0.17.1

Compare Source

Added
  • ALSA: Default implementation for Device (returns the ALSA "default" device).
  • CI: Checks default/no-default/all feature sets with platform-dependent MSRV for JACK.
Changed
  • ALSA: Devices now report direction from hint metadata and physical hardware probing.
Fixed
  • ALSA: Device enumeration now includes both hints and physical cards.
  • JACK: No longer builds on iOS.
  • WASM: WasmBindgen no longer crashes (regression from 0.17.0).

v0.17.0

Compare Source

Added
  • DeviceTrait::id method that returns a stable audio device ID.
  • HostTrait::device_by_id to select a device by its stable ID.
  • Display and FromStr implementations for HostId.
  • Support for custom Hosts, Devices, and Streams.
  • Sample::bits_per_sample method.
  • Copy implementation to InputCallbackInfo and OutputCallbackInfo.
  • StreamError::StreamInvalidated variant for when stream must be rebuilt.
  • StreamError::BufferUnderrun variant for buffer underrun/overrun notifications.
  • Hash implementation to Device for all backends.
  • AAudio: Send and Sync implementations to Stream.
  • AAudio: Support for 12 and 24 kHz sample rates.
  • ALSA: I24 and U24 sample format support (24-bit samples stored in 4 bytes).
  • ALSA: Support for 12, 24, 352.8, 384, 705.6, and 768 kHz sample rates.
  • ALSA: Eq and PartialEq implementations to Device.
  • CI: Native ARM64 Linux support in GitHub Actions.
  • CoreAudio: i8, i32 and I24 sample format support (24-bit samples stored in 4 bytes).
  • CoreAudio: Support for loopback recording (recording system audio output) on macOS > 14.6.
  • CoreAudio: Send implementation to Stream.
  • Emscripten: BufferSize::Fixed validation against supported range.
  • iOS: Complete AVAudioSession integration for device enumeration and buffer size control.
  • JACK: Support for macOS and Windows platforms.
  • JACK: BufferSize::Fixed validation to reject requests that don't match server buffer size.
  • WASAPI: Expose IMMDevice from WASAPI host Device.
  • WASAPI: I24 and U24 sample format support (24-bit samples stored in 4 bytes).
  • WASAPI: Send and Sync implementations to Stream.
  • WebAudio: Send and Sync implementations to Stream.
  • WebAudio: BufferSize::Fixed validation against supported range.
Changed
  • MSRV depends on the platform and at minimum 1.77.
  • Set examples to Rust 2021.
  • SampleRate from struct to u32 type alias.
  • Update audio_thread_priority to 0.34.
  • Migrate CHANGELOG to Keep a Changelog format.
  • AAudio: Configure buffer to ensure consistent callback buffer sizes.
  • AAudio: Buffer size range detection to query the AudioService property correctly.
  • ALSA: Improve BufferSize::Fixed precision and audio callback performance.
  • ALSA: BufferSize::Default to use the device defaults.
  • ALSA: Card enumeration to work like aplay -L does.
  • ALSA: Update alsa to 0.10.
  • ALSA: Pass silent=true to PCM.try_recover, so it doesn't write to stderr.
  • ALSA: Report buffer underruns/overruns via StreamError::BufferUnderrun.
  • ASIO: Share sys::Asio instance across all Host instances.
  • CI: Fix cargo publish to trigger on GitHub releases instead of every master commit.
  • CI: Replace cargo install commands with cached tool installation for faster builds.
  • CI: Update actions to latest versions (checkout@​v5, rust-cache@​v2).
  • CI: Verify compatibility with windows crates since v0.59.
  • CI: Test platforms on appropriate MSRV per backend.
  • CI: Fix cargo update syntax for compatibility with Cargo 1.70 (use -p flag instead of positional argument).
  • CoreAudio: Device::supported_configs to return a single element containing the available sample rate range when all elements have the same mMinimum and mMaximum values.
  • CoreAudio: Default audio device detection to be lazy when building a stream, instead of during device enumeration.
  • CoreAudio: Configure device buffer to ensure predictable callback buffer sizes.
  • CoreAudio: Remove Clone implementation from Stream.
  • JACK: Use StreamError::StreamInvalidated for JACK server sample rate changes.
  • JACK: Report buffer underruns/overruns via StreamError::BufferUnderrun.
  • WASAPI: Update windows to >= 0.59, <= 0.62.
Fixed
  • ALSA: Format selection to probe hardware endianness instead of assuming native byte order.
  • ALSA: Data race in stream shutdown.
  • ASIO: Handling for kAsioResetRequest message to prevent driver UI becoming unresponsive.
  • ASIO: Buffer silencing logic to work with non-conformant drivers (e.g., FL Studio ASIO).
  • CoreAudio: Timestamp accuracy.
  • CoreAudio: Segfaults when enumerating devices.
  • CoreAudio: Undefined behavior related to null pointers and aligned reads.
  • CoreAudio: Unnecessary microphone permission requests when using output devices only.
  • iOS: Example by properly activating audio session.
Removed
  • WebAudio: Optional wee-alloc feature for security reasons.

v0.16.0

Compare Source

Added
  • Optional supports_input/output methods to DeviceTrait.
  • 384000Hz to COMMON_SAMPLE_RATES.
  • Constructors for InputCallbackInfo, OutputCallbackInfo and StreamInstant.
  • Default impl for Host.
  • PartialOrd, Ord and Hash implementations for SampleFormat.
  • Clone, PartialEq, Eq and Hash implementations for all error enums.
  • ASIO: Support for int24.
Changed
  • AAudio: Migrate from oboe to ndk::audio. NOTE: This raises the minimum Android API version to 26 (Android 8/Oreo).
  • AAudio: Improve device names.
  • ALSA: Set realtime priority for stream threads.
  • ALSA: Improved card enumeration.
  • CoreAudio: Update coreaudio-rs dependency to 0.13.
  • JACK: Update jack dependency to 0.13.
  • WASAPI: Set realtime priority for stream threads.
Fixed
  • ALSA: Don't panic when handling invalid stream timestamps.
  • ALSA: Fix infinite loop on broken pipes.
  • ASIO: Fix build failure on Windows.
  • CoreAudio: Fix callback being called after dropping the stream.
  • CoreAudio: Fix non-default audio output.
  • CoreAudio: Fix handling of integer input formats.
  • WASAPI: Fixed memory leak.
  • WASAPI: Remove usage of eval.
RustCrypto/hashes (md-5)

v0.11.0

RustCrypto/password-hashes (pbkdf2)

v0.13.0

Compare Source

ratatui/ratatui (ratatui)

v0.30.2

Compare Source

a gift

We are excited to announce the new version of ratatui - a Rust library that's all about cooking up TUIs 👨‍🍳🐀

✨ Release highlights: https://ratatui.rs/highlights/v0302/

⚠️ List of breaking changes can be found here.

Features
  • 90639c1 (uncategorized) Add Termina backend by @joshka in #​2561

    Summary

    • add the ratatui-termina backend crate using the published termina
      crate
    • expose the backend through the termina feature and Ratatui
      prelude/backend re-exports
    • add a small Termina event-loop example and wire the backend into CI,
      xtask, README generation, and docs

    Refs #​1784

    Validation

    • cargo +nightly fmt
    • cargo check -p ratatui-termina --all-features --all-targets
    • cargo check -p ratatui --no-default-features --features termina
    • cargo check -p xtask
    • cargo check -p release-header
    • cargo xtask check-backend termina
    • cargo xtask test-backend termina
    • cargo xtask rdme --check
    • markdownlint-cli2 ARCHITECTURE.md ratatui-termina/README.md .github/ISSUE_TEMPLATE/bug_report.md

Bug Fixes
  • fce3c80 (widgets) Require thread-safe shadow effects by @joshka in #​2584

    Summary

    • require custom shadow effects to preserve the auto traits expected by
      Block-backed widgets
    • document the CellEffect auto-trait contract
    • add a public widget regression test for the affected ratatui::widgets
      re-exports

    Fixes #​2583


  • e306ce6 (buffer) Create updates for "uncovered" cells by @benjajaja in #​2587

    When a wide cell from the previous buffer is replaced by a short/normal
    cell, the trailing cell does not get an update if its content does not
    change. But if the wide cell has a background (or other) style, the
    terminal did render the trailing cell with that style.

    Force trailing cells to update if background, underline, or modifiers
    are different than the wide cell. We can ignore foreground.

    Fixes #​2585 (see that for the detailed visual reports)

  • 81e667f (scrollbar) Keep a large thumb within the track at the end by @satyakwok in #​2594

    Closes #​2582.

    Problem

    When the content is shorter than the viewport, the thumb is large
    relative to the track. With the position at the end, part_lengths
    clamped thumb_start to track_length - 1 while thumb_length was
    clamped independently to [1, track_length], so thumb_start + thumb_length could exceed track_length.

    bar_symbols lays out begin + track_start + thumb + track_end + end
    and zips it against the cells of the area. When the thumb overruns the
    track, track_end saturates to 0 but the thumb still emits more cells
    than the track can hold, so the trailing end symbol is pushed past the
    end of the area. The last visible cell ends up being a thumb (█) where
    the end arrow (▼) should be.

    Concretely, for the issue's repro (VerticalRight, content_length = 9, position = 8, height 24): track is 22, thumb_length = 17,
    thumb_start = 6, and 6 + 17 = 23 > 22.

    This is a regression from v0.30.0, where thumb_length was derived as
    thumb_end - thumb_start and therefore always fit within the track.

    Fix

    Clamp thumb_start to track_length - thumb_length (instead of
    track_length - 1) so the thumb always fits within the track and the
    end symbol is preserved.

    Test

    Two regression tests, both fail on main and pass with the fix:

    • thumb_stays_within_track_for_large_thumb_at_end checks
      part_lengths directly with the issue's parameters — asserts
      thumb_start + thumb_length <= track_length and that the parts sum to
      the track length.
    • render_scrollbar_keeps_end_symbol_for_large_thumb renders the #​2582
      case (both arrows, large thumb at the end) and asserts the end symbol is
      drawn rather than overwritten by a thumb cell.

    All existing scrollbar tests still pass.

Miscellaneous Tasks
  • c75d778 (ci) Add cargo-udeps dependency check by @joshka in #​2599

    Adds cargo xtask udeps and runs it from CI as a required job.

    This complements cargo-machete rather than replacing it. cargo-machete
    is a fast static source scan, which is why it missed the package-level
    unused deps fixed in #​2598 when the same dependency names were still
    referenced by example crates. cargo-udeps compiles the workspace and
    checks rustc dep-info, so it can catch unused dependency declarations
    for the package being checked.

    To make the new job pass, this also removes the remaining true-positive
    unused dev-deps and records explicit cargo-udeps ignores for current
    false positives / intentional cases: ratatui-core critical-section,
    ratatui-crossterm's duplicate crossterm version feature shape, and
    ratatui-termwiz's doc-example-only ratatui dev-dependency.

    I searched existing issues and PRs for udeps / cargo-udeps / "cargo
    udeps". I did not find prior ratatui discussion about adopting
    cargo-udeps; the only hits were Dependabot PR bodies for
    taiki-e/install-action release notes mentioning cargo-udeps version
    updates, for example #​1971, #​2095, #​2194, and #​2522.

    Validation:- cargo xtask udeps

    • cargo xtask format --check

  • 4a63d41 (uncategorized) Remove unused dependencies by @KikiKian in #​2598

    Audit removes these dependencies that are not used:

    ratatui/Cargo.toml — Removed from [dev-dependencies]:

    • futures
    • rand_chacha
    • tokio
    • tracing
    • tracing-appender
    • tracing-subscriber

    ratatui-core/Cargo.toml — Moved from [dependencies] →
    [dev-dependencies]:

    • indoc

Continuous Integration
  • 36854ef (uncategorized) Add auto-merge required gate by @joshka in #​2596

    Summary

    This makes GitHub auto-merge usable for Ratatui PRs once maintainers are
    happy with the change but CI is still running.

    The workflow change adds a single aggregate required job to the main
    CI workflow. The repository now has auto-merge
    enabled

    and an ensure checks pass
    ruleset
    that requires that required status context on main.

    Why

    Without a required status context, GitHub's auto-merge button is not
    useful for the maintainer flow we want. The goal is to let a maintainer
    review a PR, decide it is ready, click auto-merge, and move on without
    coming back later just to check whether the remaining jobs finished.

    This does not relax the merge policy. GitHub's own auto-merge behavior
    is to merge only after all required reviews and required status checks
    are satisfied. This change gives GitHub a stable required status to wait
    on automatically.

    Precedent

    I have been using this same auto-merge pattern in
    ratatui/tui-widgets, where
    it has worked well for the intended maintainer flow: once a PR looks
    ready, I can enable auto-merge and let GitHub merge it after the
    remaining checks and review requirements are satisfied.

    How it works

    The new required job depends on the main CI jobs in
    .github/workflows/ci.yml and always runs after them. It fails if any
    required dependency fails, is cancelled, or is skipped.

    The repository ruleset requires only this aggregate required context
    instead of requiring every individual matrix job separately. That gives
    GitHub one stable status to wait on while preserving the existing CI
    coverage.

    Things to know

    • Auto-merge is opt-in per PR. Maintainers still choose when to click
      it.
    • It does not skip review requirements, status checks, labels, or any
      other protection rule.
    • A PR with auto-merge enabled can still show as blocked while checks or
      required reviews are pending. That is expected.
    • If something needs to merge normally, maintainers can still use the
      regular merge path or an allowed ruleset bypass. This is a convenience
      path, not a hard blocker.
    • Existing open PRs may need a rebase or synchronize event after this
      lands so they pick up the new required workflow job.
    • If a new required CI job is added later, it should be added to the
      required.needs list or it will not be represented by the aggregate
      gate.
    • Jobs that are intentionally allowed to fail should be handled
      carefully before adding them to required.needs, because skipped,
      cancelled, and failed dependencies make the aggregate fail.

    Current PR state

    Auto-merge is already enabled on this PR. If you approve it and the
    required checks pass, GitHub will squash-merge it automatically;
    approving it is enough to let the PR merge once the remaining
    requirements are satisfied.

    GitHub docs

    Validation

    • ruby -e 'require "yaml"; YAML.load_file(".github/workflows/ci.yml"); puts "ok"'
    • actionlint .github/workflows/ci.yml
    • Verified ratatui/ratatui has allow_auto_merge: true
    • Verified the active ensure checks pass ruleset requires status
      context required
    • Verified this PR has squash auto-merge enabled and is blocked pending
      checks/review
New Contributors
  • @satyakwok made their first contribution in #​2594
  • @KikiKian made their first contribution in #​2598

Full Changelog: ratatui/ratatui@ratatui-v0.30.1...ratatui-v0.30.2

v0.30.1

Compare Source

a gift

We are excited to announce the new version of ratatui - a Rust library that's all about cooking up TUIs 👨‍🍳🐀

✨ Release highlights: https://ratatui.rs/highlights/v0302/

⚠️ List of breaking changes can be found here.

Features
  • 90639c1 (uncategorized) Add Termina backend by @joshka in #​2561

    Summary

    • add the ratatui-termina backend crate using the published termina
      crate
    • expose the backend through the termina feature and Ratatui
      prelude/backend re-exports
    • add a small Termina event-loop example and wire the backend into CI,
      xtask, README generation, and docs

    Refs #​1784

    Validation

    • cargo +nightly fmt
    • cargo check -p ratatui-termina --all-features --all-targets
    • cargo check -p ratatui --no-default-features --features termina
    • cargo check -p xtask
    • cargo check -p release-header
    • cargo xtask check-backend termina
    • cargo xtask test-backend termina
    • cargo xtask rdme --check
    • markdownlint-cli2 ARCHITECTURE.md ratatui-termina/README.md .github/ISSUE_TEMPLATE/bug_report.md

Bug Fixes
  • fce3c80 (widgets) Require thread-safe shadow effects by @joshka in #​2584

    Summary

    • require custom shadow effects to preserve the auto traits expected by
      Block-backed widgets
    • document the CellEffect auto-trait contract
    • add a public widget regression test for the affected ratatui::widgets
      re-exports

    Fixes #​2583


  • e306ce6 (buffer) Create updates for "uncovered" cells by @benjajaja in #​2587

    When a wide cell from the previous buffer is replaced by a short/normal
    cell, the trailing cell does not get an update if its content does not
    change. But if the wide cell has a background (or other) style, the
    terminal did render the trailing cell with that style.

    Force trailing cells to update if background, underline, or modifiers
    are different than the wide cell. We can ignore foreground.

    Fixes #​2585 (see that for the detailed visual reports)

  • 81e667f (scrollbar) Keep a large thumb within the track at the end by @satyakwok in #​2594

    Closes #​2582.

    Problem

    When the content is shorter than the viewport, the thumb is large
    relative to the track. With the position at the end, part_lengths
    clamped thumb_start to track_length - 1 while thumb_length was
    clamped independently to [1, track_length], so thumb_start + thumb_length could exceed track_length.

    bar_symbols lays out begin + track_start + thumb + track_end + end
    and zips it against the cells of the area. When the thumb overruns the
    track, track_end saturates to 0 but the thumb still emits more cells
    than the track can hold, so the trailing end symbol is pushed past the
    end of the area. The last visible cell ends up being a thumb (█) where
    the end arrow (▼) should be.

    Concretely, for the issue's repro (VerticalRight, content_length = 9, position = 8, height 24): track is 22, thumb_length = 17,
    thumb_start = 6, and 6 + 17 = 23 > 22.

    This is a regression from v0.30.0, where thumb_length was derived as
    thumb_end - thumb_start and therefore always fit within the track.

    Fix

    Clamp thumb_start to track_length - thumb_length (instead of
    track_length - 1) so the thumb always fits within the track and the
    end symbol is preserved.

    Test

    Two regression tests, both fail on main and pass with the fix:

    • thumb_stays_within_track_for_large_thumb_at_end checks
      part_lengths directly with the issue's parameters — asserts
      thumb_start + thumb_length <= track_length and that the parts sum to
      the track length.
    • render_scrollbar_keeps_end_symbol_for_large_thumb renders the #​2582
      case (both arrows, large thumb at the end) and asserts the end symbol is
      drawn rather than overwritten by a thumb cell.

    All existing scrollbar tests still pass.

Miscellaneous Tasks
  • c75d778 (ci) Add cargo-udeps dependency check by @joshka in #​2599

    Adds cargo xtask udeps and runs it from CI as a required job.

    This complements cargo-machete rather than replacing it. cargo-machete
    is a fast static source scan, which is why it missed the package-level
    unused deps fixed in #​2598 when the same dependency names were still
    referenced by example crates. cargo-udeps compiles the workspace and
    checks rustc dep-info, so it can catch unused dependency declarations
    for the package being checked.

    To make the new job pass, this also removes the remaining true-positive
    unused dev-deps and records explicit cargo-udeps ignores for current
    false positives / intentional cases: ratatui-core critical-section,
    ratatui-crossterm's duplicate crossterm version feature shape, and
    ratatui-termwiz's doc-example-only ratatui dev-dependency.

    I searched existing issues and PRs for udeps / cargo-udeps / "cargo
    udeps". I did not find prior ratatui discussion about adopting
    cargo-udeps; the only hits were Dependabot PR bodies for
    taiki-e/install-action release notes mentioning cargo-udeps version
    updates, for example #​1971, #​2095, #​2194, and #​2522.

    Validation:- cargo xtask udeps

    • cargo xtask format --check

  • 4a63d41 (uncategorized) Remove unused dependencies by @KikiKian in #​2598

    Audit removes these dependencies that are not used:

    ratatui/Cargo.toml — Removed from [dev-dependencies]:

    • futures
    • rand_chacha
    • tokio
    • tracing
    • tracing-appender
    • tracing-subscriber

    ratatui-core/Cargo.toml — Moved from [dependencies] →
    [dev-dependencies]:

    • indoc

Continuous Integration

[!IMPORTANT]
✂ PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate CLI.

@krabhi4

krabhi4 commented Nov 6, 2026

Copy link
Copy Markdown
Owner Author

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: Cargo.lock
    Updating crates.io index
error: failed to select a version for `reqwest`.
    ... required by package `cli-music-player v3.0.0 (/tmp/renovate/repos/github/krabhi4/cli-player)`
versions that meet the requirements `^0.13.5` are: 0.13.5

package `cli-music-player` depends on `reqwest` with feature `rustls-tls` but `reqwest` does not have that feature.
help: available features: __native-tls, __native-tls-alpn, __rustls, __rustls-aws-lc-rs, __tls, blocking, brotli, charset, cookies, default, default-tls, deflate, form, gzip, hickory-dns, http2, http3, json, multipart, native-tls, native-tls-no-alpn, native-tls-vendored, native-tls-vendored-no-alpn, query, rustls, rustls-no-provider, socks, stream, system-proxy, zstd


failed to select a version for `reqwest` which could resolve this conflict

@krabhi4
krabhi4 merged commit 43a4962 into main Nov 7, 2026
2 of 4 checks passed
@krabhi4
krabhi4 deleted the renovate/all-minor-patch branch November 7, 2026 03:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant