Releases: Sydney-Elvis/M3Undle
v1.0.0-alpha.7
[v1.0.0-alpha.7] — 2026-06-05
Alpha 7 is the final alpha milestone. It delivers adaptive live stream recovery for noisy provider channels, a first-class relay policy per provider, significant interface polish across nearly every page, and the consolidated schema migration that closes out all alpha database changes. Beta testing begins after this release.
Adaptive stream recovery
M3Undle now tracks per-channel stream health across sessions and uses that history to make smarter relay decisions.
- Channels are classified as Stable, Cautious, or Unstable based on observed disconnect and reconnect events
- Health classification persists in the database — it survives restarts and informs the next session startup
- Clean-watch duration is tracked after the last adverse event; a channel relaxes one health level after 30 minutes of clean playback
- At session startup, channel health is loaded before the first upstream connection so the relay decision is already informed before a single byte arrives
- When clean recovery from an MPEG-TS/H.264 boundary is not safe, M3Undle issues a hard controlled retune instead of continuing with corrupt data
- Cooldown policy improved to be less aggressive and avoid thrash after a single bad event
Provider relay policy
Replaced the hidden per-provider "clean remux" toggle with an explicit, user-facing Relay policy setting.
- Auto — M3Undle decides: direct relay for Stable and Cautious channels, clean relay when channel health is Unstable
- On — always use clean relay regardless of health
- Off — always use direct relay regardless of health
Existing providers migrate automatically: prior off rows become Auto, prior legacy remux rows become On.
The relay policy, startup health classification, and relay decision reason are now visible on the stream monitor for every active session.
Stream monitor improvements
- Transfer rates (bytes/sec) displayed per session and per connected client
- Startup health and relay decision reason shown for each active session
- Sessions display more detailed subscriber information
Retune compatibility fix
A controlled downstream retune is now suppressed when an internal or Generated HLS relay subscriber is attached to the shared session. A Jellyfin or NextPVR retune no longer kills a concurrent IPTVnator or browser HLS stream that is still active.
HDHomeRun page
New dedicated HDHomeRun page showing device identity, discovery endpoint, tuning endpoint, and configured tuner count. Makes manual client setup straightforward without hunting through settings.
About page
New About page with application version, build date, and project links. Fixes #97.
Dashboard and navigation
- Dashboard reorganized: active profiles are the primary focus, all published endpoint URLs grouped in one place
- Always-on side drawer for fast navigation between pages without reopening a menu
- Navigation highlights the currently active page
- Setup guidance built into the navigation flow to help new users move through provider add, group mapping, and publish in the right order
- Settings moved to the navigation bar for direct access
Channel mapping UX
- New providers no longer mark all channels as needing review — only genuinely new channels are flagged
- Channel tracking progress shown clearly during the mapping workflow
- Group filter chips normalized with consistent colors and shapes for Pending, Include, Exclude, and New states
- Group counts and mapped/unmapped states clearer at a glance
- Fixed a case where adding a provider marked all existing channels and groups as needing review
Profiles
- Fixed inactive provider issues incorrectly marking active providers as degraded on the Profiles page
Settings
- Settings page reorganized to make each section easier to understand
- Authentication and Xtream endpoint settings fixed
Logs
- Log search and type-based filtering added
- Actual error text now shown instead of the .NET array type name
Database and performance
- Slow database load mitigations — the UI detects and displays when the database is not responding
- UI performance improvements between page transitions
- Fixed a bug where saving a snapshot could fail under certain conditions
- All alpha migrations (Alpha 1 through Alpha 7) consolidated into a single baseline migration, removing the startup migration repair path
Container images
ghcr.io/sydney-elvis/m3undle:v1.0.0-alpha.7
ghcr.io/sydney-elvis/m3undle:alpha
v1.0.0-alpha.6
M3Undle v1.0.0-alpha.6 (Alpha)
M3Undle is a self-hosted lineup manager for large streaming provider catalogs, focused on explicit control, stable output, and DVR-friendly publishing.
This alpha milestone focuses on practical reliability: stronger stream handling for unstable providers, better browser/HLS behavior, first-class observability, Xtream provider detection, and documentation that better matches how people are actually running M3Undle.
What's in this release
Streaming and HLS reliability
- Hardened shared live stream handling so regular MPEG-TS clients and Generated HLS clients can coexist more predictably
- Improved HLS session accounting, cleanup, retune behavior, and stream monitor visibility
- Added stronger internal relay handling for Generated HLS playback, including MPEG-TS relay paths and safer fallback behavior
- Improved handling for shaky providers with upstream cooldowns, content-stall detection, clean relay support, and MPEG-TS startup boundary handling
- Fixed cases where HLS or relay sessions could hold stale client counts or make a parent shared stream look idle while playback was still active
Provider workflow and Xtream compatibility
- Added Xtream-capable endpoint detection when adding providers, with clearer mode guidance in the UI
- Added provider account and playlist-expiration visibility where the upstream exposes it
- Improved support for Xtream/Roku-style endpoint behavior and stream URL handling
- Added per-provider refresh scheduling so provider cadence can be tuned without forcing every profile to follow the same timing
Observability and diagnostics
- Added Prometheus-compatible metrics with configurable access modes, local CIDR controls, and token-based scraping
- Added liveness, readiness, and JSON health endpoints for containers, reverse proxies, and uptime checks
- Added authenticated diagnostics APIs for provider refreshes, streams, lineup state, and EPG behavior
- Added system event tracking and UI badging so stream/provider problems are easier to see without digging through logs first
Lineup, guide, and data reliability
- Added the consolidated alpha.6 schema migration with new observability, system event, provider, and scheduling data
- Improved EPG matching, coverage analysis, and guide handling around refresh/build workflows
- Fixed guide carry-forward behavior so build-only refreshes do not keep serving an empty guide when cached EPG data is available
- Added database indexes and service-side cleanup in areas expected to matter more as catalogs grow
Documentation, UI, and project hygiene
- Reworked the README with current alpha status, Docker guidance, screenshots, endpoint examples, and troubleshooting notes
- Added dedicated observability documentation covering metrics, probes, diagnostics APIs, labels, and Prometheus examples
- Updated Docker and GUI documentation around generated HLS storage, endpoint security, refresh schedules, stream proxy settings, and HDHomeRun behavior
- Continued the CLI/Core split so shared parsing, filtering, provider, EPG, and stream utilities live in the core project instead of the web layer
Testing
- Expanded focused coverage around stream sharing, Generated HLS, upstream connector behavior, MPEG-TS boundary scanning, observability, refresh scheduling, system events, Xtream/provider handling, and EPG matching
- Added regression coverage for several alpha.6 stream lifecycle and guide refresh fixes
- Fixed a timing-sensitive CI failure in the HDHR-only subscriber keepalive test caused by a shared cancellation token being used for both subscriber lifetime and an intentional observation delay
Container Images
ghcr.io/sydney-elvis/m3undle:v1.0.0-alpha.6
ghcr.io/sydney-elvis/m3undle:alpha
alphais a rolling tag and points to the latest alpha release.
Known alpha limitations
Still alpha: streaming, HLS, Xtream, HDHomeRun, and observability behavior are much stronger in this release, but broader beta validation across DVR and player clients is still ongoing. Plex and Emby Live TV/DVR testing remain limited by their paid subscription requirements, and provider-specific stream quirks may still need follow-up tuning before beta.
Contributor
Full Changelog: v1.0.0-alpha.5...v1.0.0-alpha.6
v1.0.0-alpha.5 — Streaming Stability, Profiles, and Migration Hardening
M3Undle v1.0.0-alpha.5 (Alpha)
M3Undle is a self-hosted lineup manager for large streaming provider catalogs, focused on explicit control, stable output, and DVR-friendly publishing.
This alpha milestone concentrates on stability and usability after alpha.4, with the biggest work in streaming reliability, HDHomeRun behavior, profile workflow, migration safety, and operator-facing diagnostics.
What's in this release
Streaming and HLS hardening
- Hardened HLS playback and relay behavior across shared-session scenarios
- Fixed cases where HLS playback could bypass provider max-stream enforcement
- Fixed HLS client counting so web-style clients are reflected correctly in active stream and session views
- Fixed HLS cleanup gaps that could leave stale session state behind
- Improved shared HLS reuse and subscriber accounting to reduce unnecessary upstream churn
- Hardened FFmpeg-backed HLS relay startup so stalled or empty relay launches fall back cleanly instead of creating zombie upstream sessions
- Fixed stream monitor and stream info visibility issues for HLS sessions
- Fixed channel-switch failures caused by stream-limit handling during active playback
- Added upstream force MPEG-TS override support for compatibility-sensitive playback paths
HDHomeRun compatibility and client behavior
- Fixed HDHomeRun lifecycle handling for HTTP subscribers dropping mid-session
- Fixed HDHomeRun settings behavior so applied snapshot reads use live database values instead of startup-latched state
- HDHomeRun lineup is now globally sorted by guide number
- Improved Jellyfin-related HDHomeRun discovery and resolution behavior
Profiles, channels, and lineup workflow
- Added active profile switching
- Expanded profile workflow support and cleaned up profile handling
- Fixed failures on profiles without a linked provider
- Finished dynamic group implementation
- Improved advanced channel management and channel reordering behavior
- Fixed copy and paste workflow issues in the UI
- Fixed provider deletion workflow issues
- Simplified confusing lineup controls by removing the extra active-provider step and the old include-group option
- Updated EPG ordering so guide output matches M3U ordering more consistently
- Improved lineup status and switching feedback in the UI
Data model, migrations, and runtime reliability
- Added the consolidated alpha.5 schema migration
- Fixed multiple migration and database upgrade edge cases
- Resolved database crash and startup warning scenarios
- Reduced migration merge noise by tightening the migration gate
- Fixed Docker configuration blind spots that affected local and container workflows
API, observability, and project hygiene
- Added Swagger and OpenAPI endpoints for easier API inspection and validation
- Improved logging and observability around streaming behavior for diagnostics
- Fixed login-recording blind spots
- Applied code-scanning follow-up fixes and general hardening cleanup
- Updated documentation, validation checklists, and project planning artifacts
Testing
- Added and updated migration coverage for the alpha.5 schema
- Expanded focused streaming and HLS test coverage
- Improved test harness support and exposed test API coverage
- Fixed Linux-specific test issues so the suite behaves more consistently across environments
Container Images
ghcr.io/sydney-elvis/m3undle:v1.0.0-alpha.5
ghcr.io/sydney-elvis/m3undle:alpha
alphais a rolling tag and points to the latest alpha release.
Known alpha limitations
Still alpha: HLS and HDHomeRun behavior have been significantly hardened in this release, but broader client interoperability and long-run soak validation are still ongoing. Complex provider-specific edge cases, unusual stream formats, and less common client behaviors may still require follow-up tuning before beta.
Contributor
Full Changelog: v1.0.0-alpha.4...v1.0.0-alpha.5
v1.0.0-alpha.4 — Streaming Engine, EPG, and HDHomeRun Compatibility
M3Undle v1.0.0-alpha.4 (Alpha)
M3Undle is a self-hosted lineup manager for large streaming provider catalogs,
focused on explicit control, stable output, and DVR-friendly publishing.
This alpha milestone delivers the core streaming engine, EPG source management,
Xtream-Codes compatibility, and hardened HDHomeRun emulation — tested against
NextPVR, Jellyfin, and native LibHDHomeRun clients.
What's in this release
Stream relay engine
- New stream proxy with ring-buffer architecture for live channel relay
- Shared live sessions: multiple clients watching the same channel share a single upstream connection
- Configurable session limits, idle grace periods, buffer sizes, and reconnect behavior
- Upstream reconnect with stall detection, outage window, and failure strike tracking
- Subscriber queue model with per-client backpressure and disconnect reason tracking
- HLS detection and manifest rewriting for browser-based clients (IPTVnator, Electron)
- HLS proxy endpoint for segment-level relay with provider header forwarding
- Stream administration page with live session and viewer monitoring
- Streaming settings UI with validation and restart-required tracking
- Fixed
HttpResponseMessagedisposal leak in upstream connector - Fixed response disposal on non-success HTTP status codes
HDHomeRun emulation (hardened)
- Native tuner protocol support:
/tuner{N}/v{ch},/tuner{N}/ch{ch}, and/tuner{N}/auto/...routes used by LibHDHomeRun clients (NextPVR, Channels DVR, Plex) - Auto-tune endpoints:
/hdhr/auto/v{ch},/hdhr/auto/ch{ch},/hdhr/auto/{ch}— resolve guide numbers and redirect to tune URL - HDHomeRun tuner manager with tuner slot reservation and concurrency control
- Native tuner routes force raw MPEG-TS delivery, matching real HDHomeRun device behavior
- Default tuner count changed to 4 (matching advertised HDHR3-US model)
- Virtual tuner ID includes tuner index for per-tuner session isolation
- Structured event logging (
EventType = "HDHR") across all HDHR endpoints and discovery services - Client endpoint status codes preserved — HDHR, stream, playlist, and guide 404/503 responses no longer rewritten to Blazor HTML
EPG source management
- EPG source CRUD with fetch scheduling and manual refresh
- XMLTV parser for external guide data ingestion
- EPG channel mapper with auto-matching and manual mapping UI
- EPG compiler that merges multiple sources with configurable priority ordering
- EPG catalogue model linking sources to lineup channels
- Fixed O(m*n)
FindIndexinEpgCompilerOrderBywith pre-built priority dictionary
Xtream-Codes compatibility
- Full Xtream-Codes API endpoint set for player compatibility
- Xtream path credential filter for URL-embedded authentication
- Xtream stream ID cache for stable ID mapping across refreshes
- Live stream URL generation
Live proxy URLs
- Now include a
.tsextension tail (e.g.,/live/{key}/20312.ts) when the upstream URL is a bare numeric ID, so clients that content-sniff by file extension recognize the stream as MPEG-TS - HLS streams (
.m3u8extension or?output=m3u8/?type=hlsquery params) are preserved without.tsrewriting
Provider and data model
- Provider stream limit support (per-provider concurrent stream caps)
- EPG schema:
epg_sources,epg_source_channels,epg_channel_mappings,epg_fetch_runs - Streaming settings columns added to
site_settings - Consolidated alpha.4 migration gate (single
Alpha4_Schemamigration) - Migration repair for databases upgraded from early alpha.4 builds with split migrations
- Default stream limit set when adding a provider
Security and access control
- Forwarded headers security fix: removed unrestricted proxy trust, added configurable trusted proxies
- Client endpoint access denial logging (path, method, reason, client IP)
- SQLite connection pool cleanup to prevent stale file locks
Build and observability
- Version bumped to
1.0.0-alpha.4 - Build date (UTC) and optional build number stamped as assembly metadata at compile time
- Version, build date, and build number logged at startup for binary traceability
- CLI
--versiondisplays full build info
UI and dashboard
- Streams page for monitoring active sessions and connected viewers
- Settings page expanded with streaming configuration controls
- EPG Sources page with source management and mapping workflows
- Dashboard updates for streaming status visibility
- Log scroll initialization fix (proper cleanup on component dispose)
- Navigation menu updated for new pages
Testing
- Ring buffer unit tests: eviction, lease ref-counting, snapshot retention, complete behavior
- Channel session integration tests (shared sessions, subscriber lifecycle, idle shutdown)
- Stream request resolver tests including native HDHR tuner routes
- HLS proxy endpoint security tests
- HDHomeRun endpoint and lineup service tests (auto-tune, guide number resolution, native tuner routes)
- Streaming settings service and options validator tests
- EPG compiler, mapper, source fetcher, and XMLTV parser tests
- M3U serializer tests for
.tstail logic AppBuildInfotests- Application restart service tests
- Centralized SQLite test cleanup infrastructure (connection pool handling, retry-on-lock)
Container Images
ghcr.io/sydney-elvis/m3undle:v1.0.0-alpha.4
ghcr.io/sydney-elvis/m3undle:alpha
alphais a rolling tag — it always points to the latest alpha release.
Known alpha limitations
Still alpha: HLS proxy is functional but not fully hardened for all edge cases,
EPG merging covers common XMLTV formats but exotic sources may need parser
extensions, and Xtream-Codes compatibility covers standard player flows but
not the full API surface. Broader client interoperability testing is ongoing.
Contributor
Full Changelog: v1.0.0-alpha.3...v1.0.0-alpha.4
v1.0.0-alpha.3 — UI and Endpoint Security
M3Undle v1.0.0-alpha.3 (Alpha)
M3Undle is a self-hosted lineup manager for large streaming provider catalogs, focused on explicit control, stable output, and DVR-friendly publishing.
This alpha milestone adds foundational endpoint security and the first HDHomeRun emulation capabilities.
What's in this release
Security and access control
- Added application authentication flows for protected UI and management paths
- Introduced basic endpoint authentication for compatibility endpoints
- Added endpoint credential and access-binding model support
- Added active profile and endpoint access resolution services
- Reduced sensitive logging detail (username removed from logs)
HDHomeRun emulation (initial)
- Initial HDHomeRun device/discovery/lineup endpoint implementation
- New HDHomeRun device, discovery, lineup, and options services
- Compatibility endpoint integration updates for HDHomeRun behavior
Serialization and compatibility
- Added/rendered lineup model support for authenticated endpoint responses
- Added M3U/XMLTV serialization service improvements for endpoint security flow
Data model and schema
- Added migrations for endpoint security and related schema updates
- Consolidated migration naming/merge alignment after mainline merge updates
Testing
- Added endpoint security and resolver unit tests
- Added HDHomeRun unit tests
- Added integration smoke/probe scripts for discovery and endpoint behavior
Documentation and project hygiene
- Documentation updates for endpoint auth and compatibility behavior
- Follow-up cleanup commits and project plan updates
Container Images
- ghcr.io/sydney-elvis/m3undle:v1.0.0-alpha.3
- ghcr.io/sydney-elvis/m3undle:alpha (rolling alpha tag)
Known alpha limitations
Still alpha: endpoint auth is intentionally basic, HDHomeRun emulation is early-stage, and broader client interoperability/performance hardening is planned for upcoming milestones.
Contributor
Full Changelog: v1.0.0-alpha.2...v1.0.0-alpha.3
v1.0.0-alpha.2
M3Undle v1.0.0-alpha.2 (Alpha)
M3Undle is a self-hosted lineup manager for large streaming provider catalogs, focused on explicit control, stable output, and DVR-friendly publishing.
This alpha milestone expands channel workflow control and improves day-to-day usability.
What's in this release
Channel workflow and mapping
- Major channel mapping page revamp to make workflow easier to follow
- Added channel page support for viewing and editing channels
- Improved group/channel selection and include/exclude controls
- Added cross-group channel search and bulk selection helpers
Lineup shaping improvements
- Channel numbering fixes and related stability updates
- Better handling for VOD and series paths in generated output
- Group creation and group-selection bug fixes
Provider and UI experience
- Add provider flow updated to be more user-friendly
- UI cleanup and consistency improvements across dashboard and mapping flows
- Multiple quality-of-life tweaks from iterative alpha feedback
Storage and snapshot handling
- Snapshot storage moved to a binary format that can be searched
- Database and log location updates for cleaner runtime layout
Docker and platform reliability
- Docker build/runtime task hardening (including missing-folder handling)
- Fixes for Linux/macOS execution and container workflow issues
- Additional compose and environment cleanup passes
Documentation
- Broad docs cleanup and neutralized project direction language updates
Container Images
- ghcr.io/sydney-elvis/m3undle:v1.0.0-alpha.2
- ghcr.io/sydney-elvis/m3undle:alpha (rolling alpha tag)
Known alpha limitations
Planned for future releases: endpoint-level access controls, production-grade endpoint auth policies, expanded HDHomeRun compatibility behavior, and deeper validation/test coverage for edge client scenarios.
Contributor
Full Changelog: v1.0.0-alpha.1...v1.0.0-alpha.2
v1.0.0-alpha.1 — First Alpha Release
M3Undle v1.0.0-alpha.1 (Alpha)
M3Undle is a self-hosted lineup manager for large streaming provider catalogs, focused on explicit control, stable output, and DVR-friendly publishing.
This is the first alpha milestone — February 26, 2026.
What's in this release
Core platform
- Architecture for handling large provider catalogs (10k–50k+ channels)
- Canonical channel + snapshot-oriented data model
- SQLite-backed persistence with initial schema/migrations
CLI workflow
- Provider playlist fetching (M3U) and guide data handling (XMLTV)
- Group discovery and filtering
.env-based credential support
Service + Web UI
- Provider management, group preview, snapshot lifecycle
- Staged/active snapshot behavior with last-known-good serving on refresh failure
Compatibility endpoints
- M3U, XMLTV, and stream relay endpoints for DVR/client integration
- Stable stream keys for client mapping stability
Docker / deployment
- Container support via GHCR with
PUID:PGIDuser mapping - Linux/container fixes and expanded compose examples
Container Images
ghcr.io/sydney-elvis/m3undle:v1.0.0-alpha.1ghcr.io/sydney-elvis/m3undle:alpha(rolling alpha tag)
Known alpha limitations
Planned for future releases: lineup shaping controls, group inclusion rules, channel numbering, channel inbox/approval workflows, HDHomeRun emulation.
Contributor
Full Changelog: v1.0.0-alpha-test.4...v1.0.0-alpha.1