Skip to content

Releases: DjangoAILab/CastFabric

CastFabric v0.11.0-alpha.5

Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Sep 04:06

CastFabric v0.11.0-alpha.5

This alpha hardens multi-device and multi-protocol ownership at the physical-output boundary.

  • Serialize physical playback commands per output while keeping different speakers independent.
  • Fence DLNA, AirPlay, MiPlay and MCP callbacks by the current session owner so stale stop, resume,
    seek or volume callbacks cannot disrupt a newer session.
  • Delay MiPlay session creation until a valid Open, preventing idle TCP probes from appearing as
    active casting sessions or blocking a real sender; incomplete handshakes now expire after 15 seconds.
  • Give each MiPlay receiver a stable, target-specific discovery identity and advertise the observed
    commonData field.
  • Isolate AirPlay stateful clients with connection tokens and reject a competing stateful client with
    RTSP 453 instead of sharing decoder state.
  • Keep playlist-run preemption and media-session preemption atomic, and improve partial-start,
    shutdown and Zeroconf cleanup.

Upgrade and verification notes

The audio data plane is unchanged: this release does not alter FFmpeg arguments, PCM format, WAV
headers, HTTP stream mode, queue sizing, physical renderer play type or the existing five-second DMR
pull-confirmation boundary. On one output, concurrent control commands are intentionally ordered; a
takeover can therefore wait for an in-flight renderer confirmation. Different outputs do not share a
playback lock.

Automated verification covers same-output serialization, cross-output concurrency, stale callback
fencing, idle MiPlay probes, AirPlay client ownership, DLNA ownership, playlist/session consistency,
the full Python suite, direct audio seek and the offline MiPlay WFD/RTP/MPEG-TS/PCM path. Xiaomi-phone
discovery and audible real-device behavior remain separate deployment gates and must not be inferred
from self-discovery or simulation.

Use the existing persistent /app/conf mount and retain the previous container or immutable image for
rollback. Restarting CastFabric interrupts active routes but does not automatically start playback.

CastFabric v0.11.0-alpha.4

Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Sep 12:43

CastFabric v0.11.0-alpha.4

This alpha brings reusable audio and server-run playlists into the console and MCP.

  • Upload audio or save external URLs as persistent resources with editable display names, notes and tags.
  • Organize playlists, reorder items and start all items or a selected item on a chosen speaker.
  • Keep playback running on the server after the client or Agent exits; preserve factual history and progress without automatic playback after restart.
  • Unify the console mark with the project's GitHub/README SVG, add an open-source link, and make language and connection controls clearer on desktop and mobile.
  • Center content dialogs, keep actions reachable on short screens, improve keyboard focus and preserve form entries on errors.
  • Extract MP3 and other supported local audio durations using the existing PyAV dependency; backfill missing local-file durations without changing resource IDs, titles, playlist order or history. Unknown totals remain unknown instead of showing zero.
  • Include the real-device fixes for DLNA position/EOF observation and re-upload of previously deleted audio.

Upgrade and verification notes

Use the existing persistent /app/conf mount. Upgrades from alpha.3 create the six-table content store;
upgrades from the server-playlist candidate retain its schema and stored audio. Restart interrupts old
active session records and never starts sound automatically. Retain the previous image/container for rollback.

The two curated Home Server playlists are user data, not bundled examples or downloads added to the image.
MCP remains a trusted-LAN service without public-Internet authentication. Physical-speaker chain tests from
the preceding candidate are recorded separately; this UI/metadata release uses silent validation and does
not claim a new listening test or simultaneous two-speaker acceptance.

CastFabric v0.11.0-alpha.3

Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Sep 15:24

CastFabric v0.11.0-alpha.2

Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Sep 03:12