Conversation
…ers need / want to keep tabs on.
…e max completely if not set.
Removes FFmpeg wall-clock timestamp injection from clean relay remux, preserving negative timestamp normalization while avoiding downstream Jellyfin/NextPVR video cadence issues.
…hanges in support of #96
…ions Health derivation now counts clean-watch duration only after the last adverse health event in the 24-hour window and relaxes a defensive profile by one level after 30 minutes of clean watch time Added test-mode stream-health debug surfaces for the lab Added durable schema support
…eedingSetup query Remote branch introduced proper markNewGroups/queueNewRowsForReview parameters and GetInitialProfileProviderSyncProfileIdsAsync helper. Resolved conflict by adopting the remote's parameter-based approach and removing the local isInitialProviderSync detection. Updated GroupsNeedingSetup query to match the new initial-sync state (IsNew=false + channel rows with excluded state) instead of TrackingPolicyNotify. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ssed when an internal/generated-HLS relay subscriber is attached. That means a Jellyfin/NextPVR retune should no longer kill an IPTVnator/browser HLS stream that is still alive.
There was a problem hiding this comment.
Pull request overview
This PR updates the M3Undle “alpha.7” release with broad UI/UX refinements plus significant streaming/observability improvements (adaptive relay policy metadata, channel health event persistence, expanded diagnostics), along with new endpoint/security settings (Xtream enable toggle, HDHomeRun allowed-network filtering) and various reliability tweaks.
Changes:
- Adds streaming channel-health observability (diagnostic event enrichment, persistence/retention, health evidence endpoints) and extends upstream relay decision metadata.
- Improves UI consistency and usability across Profiles/Providers/Logs/System Events, including new shared chip components and log filtering.
- Adds new settings/safety controls (Xtream compatibility enable flag, HDHR network allowlist filter), plus generated-HLS workdir validation and readiness output enhancements.
Reviewed changes
Copilot reviewed 131 out of 132 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/M3Undle.Web.Tests/Streaming/UpstreamStreamConnectorTests.cs | Updates connector tests for new FFmpeg args and new ctor dependency. |
| tests/M3Undle.Web.Tests/Streaming/StreamChannelHealthEventRecorderTests.cs | Adds tests validating channel-health event persistence behavior. |
| tests/M3Undle.Web.Tests/Streaming/HlsProxyEndpointSecurityTests.cs | Updates endpoint security stubs for Xtream compatibility settings. |
| tests/M3Undle.Web.Tests/Streaming/GeneratedHlsSessionManagerTests.cs | Adds coverage for generated-HLS workdir preparation failures. |
| tests/M3Undle.Web.Tests/Status/ReadinessEndpointTests.cs | Validates readiness payload reason plus refresh-in-progress behaviors. |
| tests/M3Undle.Web.Tests/Settings/StreamingOptionsValidatorTests.cs | Adds tests for new reconnect/recovery-related validation rules. |
| tests/M3Undle.Web.Tests/Settings/HdHomeRunSettingsServiceTests.cs | Updates service construction and adds AllowedNetworks to commands. |
| tests/M3Undle.Web.Tests/Authentication/EndpointSecurityServiceTests.cs | Updates endpoint security update commands for Xtream flag. |
| tests/M3Undle.Web.Tests/Authentication/ClientEndpointAccessResolverTests.cs | Updates endpoint security stub for new Xtream-enabled API. |
| tests/M3Undle.Web.Tests/Application/ProviderPageServiceValidationTests.cs | Updates refresh trigger stub for new RefreshStartedAt property. |
| tests/M3Undle.Web.Tests/Application/ProfilesPageServiceTests.cs | Updates refresh trigger stub for new RefreshStartedAt property. |
| tests/M3Undle.Web.Tests/Application/LineupStatusServiceTests.cs | Adds test for “no live channels” snapshot behavior and trigger stub updates. |
| tests/M3Undle.Web.Tests/Application/EventServiceTests.cs | Adds tests for new system-event grouping semantics and titles. |
| tests/M3Undle.Web.Tests/Application/ChannelMappingPageServiceTests.cs | Updates refresh trigger stub for new RefreshStartedAt property. |
| tests/M3Undle.Web.Tests/Api/XtreamEndpointTests.cs | Adds tests ensuring generated HLS Xtream URLs use path credentials. |
| tests/M3Undle.Web.Tests/Api/OpenApiEndpointTests.cs | Ensures streaming settings endpoints appear in management OpenAPI. |
| tests/M3Undle.Core.Tests/AppBuildInfoTests.cs | Updates build info tests for new GitHash field. |
| src/WebVersion.props | Bumps web version to 1.0.0-alpha.7. |
| src/M3Undle.Web/wwwroot/app.js | Adds scrolling helpers and mapping-panel drag resize initializer. |
| src/M3Undle.Web/wwwroot/app.css | UI styling updates (drawer overflow, nav active styling, hover rules). |
| src/M3Undle.Web/Streaming/Upstream/UpstreamStreamConnector.cs | Adds health-profile-based relay decision support and FFmpeg flag updates. |
| src/M3Undle.Web/Streaming/Upstream/UpstreamConnection.cs | Adds relay-policy metadata to connection objects. |
| src/M3Undle.Web/Streaming/Subscribers/SubscriberConnection.cs | Normalizes IPv4-mapped IPv6 addresses for consistent logging/diagnostics. |
| src/M3Undle.Web/Streaming/Sessions/ChannelSessionManager.cs | Avoids reusing sessions that are no longer accepting subscribers; wires health services. |
| src/M3Undle.Web/Streaming/Observability/StreamSessionSnapshot.cs | Expands session snapshot with relay/recovery/health/rate metadata. |
| src/M3Undle.Web/Streaming/Observability/StreamProviderSnapshot.cs | Expands provider snapshot with relay/recovery metadata. |
| src/M3Undle.Web/Streaming/Observability/StreamingRegistry.cs | Adds background rate calculation and exposes bytes/sec for sessions/clients. |
| src/M3Undle.Web/Streaming/Observability/StreamDiagnosticEventKind.cs | Extends diagnostic event kinds for recovery and health-related events. |
| src/M3Undle.Web/Streaming/Observability/StreamDiagnosticEvent.cs | Extends diagnostic event payload with recovery/relay/watch fields. |
| src/M3Undle.Web/Streaming/Observability/StreamClientSnapshot.cs | Adds per-client bytes/sec field. |
| src/M3Undle.Web/Streaming/Observability/StreamChannelHealthTrend.cs | Introduces health-trend types and result model. |
| src/M3Undle.Web/Streaming/Observability/StreamChannelHealthProfile.cs | Adds health profile/policy models and profiling service interfaces + noop impl. |
| src/M3Undle.Web/Streaming/Observability/StreamChannelHealthEventRecorder.cs | Adds background recorder that persists selected health events + retention purge. |
| src/M3Undle.Web/Streaming/Observability/IStreamChannelHealthEventRecorder.cs | Adds recorder interface and noop implementation. |
| src/M3Undle.Web/Streaming/Models/SessionState.cs | Adds HoldingOutput session state. |
| src/M3Undle.Web/Streaming/GeneratedHls/GeneratedHlsSessionManager.cs | Adds workdir writability probing and safer directory creation handling. |
| src/M3Undle.Web/Streaming/Configuration/StreamingOptionsValidator.cs | Adds validation for new reconnect/recovery cooldown and limits. |
| src/M3Undle.Web/Streaming/Configuration/ReconnectOptions.cs | Adds new reconnect cooldowns and recovery options. |
| src/M3Undle.Web/Streaming/Configuration/CleanRelayOptions.cs | Adds Auto/On semantics and normalizes provider relay mode values. |
| src/M3Undle.Web/Security/XtreamPathCredentialFilter.cs | Gates Xtream path-credential endpoints behind Xtream enabled setting. |
| src/M3Undle.Web/Security/HdhrNetworkFilter.cs | Adds IP allowlist endpoint filter for HDHR endpoints. |
| src/M3Undle.Web/Program.cs | Adds/adjusts DI registrations, hosted services, HttpClient timeout policy, SQLite pragmas. |
| src/M3Undle.Web/Observability/M3UndleHealthChecks.cs | Adds reason string, improves readiness payload, and reason ToString behavior. |
| src/M3Undle.Web/M3Undle.Web.csproj | Adds EF Design package (PrivateAssets) for tooling/scaffolding support. |
| src/M3Undle.Web/Data/Migrations/ApplicationDbContextModelSnapshot.cs | Updates snapshot defaults and adds new entities/settings fields. |
| src/M3Undle.Web/Data/Migrations/20260525140000_Alpha7_XtreamAndHdhrNetworkSettings.cs | Adds Xtream enabled + HDHR allowed networks columns. |
| src/M3Undle.Web/Data/Migrations/20260522120000_Alpha7_StreamHealthCleanWatch.cs | Adds clean watch duration column to health events. |
| src/M3Undle.Web/Data/Migrations/20260521110000_Alpha7_RelayPolicyAutoDefault.cs | Migrates provider relay policy values to new normalization (auto/on). |
| src/M3Undle.Web/Data/Migrations/20260519093000_Alpha7_StreamChannelHealthEvents.cs | Adds stream_channel_health_events table and indexes. |
| src/M3Undle.Web/Data/Entities/StreamChannelHealthEvent.cs | Adds persisted entity for channel health events. |
| src/M3Undle.Web/Data/Entities/SiteSettings.cs | Adds XtreamCompatibilityEnabled and HdhrAllowedNetworks settings. |
| src/M3Undle.Web/Data/Entities/Provider.cs | Defaults provider CleanRelayMode to auto. |
| src/M3Undle.Web/Data/Configurations/StreamChannelHealthEventConfiguration.cs | Adds EF configuration for channel health event table + indexes. |
| src/M3Undle.Web/Data/Configurations/SiteSettingsConfiguration.cs | Maps new site settings fields and seeds defaults. |
| src/M3Undle.Web/Data/Configurations/ProviderConfiguration.cs | Updates provider clean relay mode default to auto. |
| src/M3Undle.Web/Data/ApplicationDbContext.cs | Adds DbSet for StreamChannelHealthEvents. |
| src/M3Undle.Web/Contracts/Providers/ProviderContracts.cs | Defaults provider DTO/request clean relay mode to auto. |
| src/M3Undle.Web/Contracts/ProfilesContracts.cs | Adds provider fetch status/error summary and removed-groups count fields. |
| src/M3Undle.Web/Contracts/DashboardContracts.cs | Expands dashboard profile/provider summary models. |
| src/M3Undle.Web/Contracts/CustomGroupContracts.cs | Adds linked provider group IDs to custom group DTO. |
| src/M3Undle.Web/Contracts/ChannelFilterContracts.cs | Adds mapped channel panel item contract. |
| src/M3Undle.Web/Components/Shared/TooltipChip.razor | Adds reusable chip-with-tooltip component (optional click affordance). |
| src/M3Undle.Web/Components/Shared/StatusChip.razor | Adds reusable status chip component for consistent chip rendering. |
| src/M3Undle.Web/Components/Shared/ChipFilterToggle.razor | Adds reusable chip toggle for filters with tooltip. |
| src/M3Undle.Web/Components/Pages/Providers/XtreamProviderForm.razor | Adds new provider creation form for Xtream providers. |
| src/M3Undle.Web/Components/Pages/Providers/ProviderStreamFormat.razor | Adds shared stream format controls including relay policy selection. |
| src/M3Undle.Web/Components/Pages/Providers/ProviderProfileSelect.razor | Adds shared profile association selector. |
| src/M3Undle.Web/Components/Pages/Providers/ProviderFormTypes.cs | Adds form prefill record types and provider mode enum. |
| src/M3Undle.Web/Components/Pages/Providers/ProviderContentToggles.razor | Adds shared content-type toggle component. |
| src/M3Undle.Web/Components/Pages/Providers/ProviderConcurrentStreams.razor | Adds shared concurrent-stream limit control component. |
| src/M3Undle.Web/Components/Pages/Providers/_Imports.razor | Adds provider-pages imports/namespace. |
| src/M3Undle.Web/Components/Pages/Profiles.razor | UI refresh improvements and deferred pending-count fetch + endpoint flags display. |
| src/M3Undle.Web/Components/Pages/ProfileDetail.razor | UI refinements, better status display, provider status tooltips, snapshot deltas. |
| src/M3Undle.Web/Components/Pages/Logs.razor | Adds search and level filtering plus improved layout/scroll handling. |
| src/M3Undle.Web/Components/Pages/Channels/ChannelMapping.razor.css | Adds CSS for new resizable mapping side panel. |
| src/M3Undle.Web/Components/Layout/SystemEventPanelGrouping.cs | Adds grouping logic for system events in UI. |
| src/M3Undle.Web/Components/Layout/SystemEventPanel.razor | Updates system event panel UI/behavior and integrates live updates. |
| src/M3Undle.Web/Components/Layout/NavMenu.razor | Reworks nav menu layout/tooltips and adds delayed-stats handling. |
| src/M3Undle.Web/Components/Layout/LoginDisplay.razor.css | Adds styling for updated account menu UI. |
| src/M3Undle.Web/Components/Layout/LoginDisplay.razor | Updates account menu presentation and sign-out affordance. |
| src/M3Undle.Web/Components/Layout/AboutDialog.razor.css | Adds styling for new About dialog. |
| src/M3Undle.Web/Components/Layout/AboutDialog.razor | Adds About dialog content including git hash and build date formatting. |
| src/M3Undle.Web/Components/EndpointUrlVariant.cs | Adds model type for endpoint URL variants. |
| src/M3Undle.Web/Components/EndpointCopyRow.razor | Adds reusable copy-to-clipboard endpoint URL row component. |
| src/M3Undle.Web/Components/App.razor | Adjusts stylesheet ordering for MudBlazor/app styles. |
| src/M3Undle.Web/Components/_Imports.razor | Adds shared-components using. |
| src/M3Undle.Web/appsettings.json | Adds defaults for new reconnect/recovery settings. |
| src/M3Undle.Web/appsettings.Development.json | Adds localization logging override. |
| src/M3Undle.Web/Application/SnapshotRefreshService.cs | Adds refresh started time and provider-data retention purging. |
| src/M3Undle.Web/Application/SnapshotBuilder.cs | Orders enabled providers and adjusts “initial sync” review queue behavior. |
| src/M3Undle.Web/Application/LineupStatusService.cs | Simplifies provider resolution and treats “no live channels” as no snapshot. |
| src/M3Undle.Web/Application/IRefreshTrigger.cs | Adds RefreshStartedAt property. |
| src/M3Undle.Web/Application/HdHomeRunSettingsService.cs | Switches to scope-factory DB usage and adds AllowedNetworks support. |
| src/M3Undle.Web/Application/EndpointUrlService.cs | Adds env/container-aware endpoint base URL detection/normalization. |
| src/M3Undle.Web/Application/EndpointSecurityService.cs | Adds Xtream compatibility enable flag to settings and API. |
| src/M3Undle.Web/Application/DashboardStatsService.cs | Improves provider/run health aggregation and expands dashboard summaries. |
| src/M3Undle.Web/Application/CustomGroupPageService.cs | Adds split query and exposes linked provider group IDs in DTO mapping. |
| src/M3Undle.Web/Application/ChannelStatsService.cs | Optimizes queries and aggregates counts with fewer includes. |
| src/M3Undle.Web/Application/ChannelMappingPageService.cs | Optimizes selection counts, adds mapped channel panel data, improves review listing. |
| src/M3Undle.Web/Api/XtreamEndpoints.cs | Uses Xtream path credentials for generated HLS URLs when available. |
| src/M3Undle.Web/Api/SiteSettingsApiEndpoints.cs | Adds streaming settings GET/PUT plus Xtream/HDHR request updates. |
| src/M3Undle.Web/Api/HdHomeRunEndpoints.cs | Adds HDHR network filter and scopes legacy aliases under filtered group. |
| src/M3Undle.Web/Api/DiagnosticsApiEndpoints.cs | Adds per-session stream health evidence endpoint. |
| src/M3Undle.Web/Api/CompatibilityEndpoints.cs | Enhances readiness payload and adds debug stream-health seed/query endpoints. |
| src/M3Undle.Core/MpegTs/MpegTsPacketBatch.cs | Adds HasKnownH264VideoStream metadata. |
| src/M3Undle.Core/MpegTs/MpegTsBoundaryScanner.cs | Populates new packet batch metadata based on detected video PID. |
| src/M3Undle.Core/AppBuildInfo.cs | Adds GitHash assembly metadata support and short-hash normalization. |
| src/Directory.Build.props | Embeds git hash into assembly metadata during build. |
| src/CoreVersion.props | Bumps core version to 1.0.0-alpha.7. |
| dotnet-tools.json | Adds dotnet-ef tool manifest. |
| docs/GUI.md | References the new GUI consistency contract doc. |
| docs/dev/GUI_CONSISTENCY_CONTRACT.md | Introduces a UI consistency contract for chips/tooltips/styles. |
| .vscode/tasks.json | Updates container run options/ports for VS Code tasks. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR goes though each page and makes things more intuitive. More tweeks might be found during beta but everything is done with the exception of Adaptive stream recovery which needs more live testing.