SergeantPanda
ad83d968dc
fix(LiveGroupFilter): adjust Box maxHeight to improve layout consistency
2026-05-02 13:04:05 -05:00
SergeantPanda
7cbbf2a270
perf(LiveGroupFilter, ChannelsTable): optimize state updates and re-rendering logic for improved performance
2026-05-02 12:42:10 -05:00
SergeantPanda
b470ae68db
perf(ChannelGroupViewSet): optimize list method to reduce SQL queries by pre-evaluating queryset
2026-05-02 12:00:06 -05:00
SergeantPanda
d0ce2fdd6d
perf(M3UAccountSerializer): optimize stream count retrieval to avoid redundant queries
2026-05-02 11:51:13 -05:00
SergeantPanda
d08298b9c3
perf(M3UAccount): optimize list endpoint with pre-aggregated stream counts
2026-05-02 11:50:53 -05:00
SergeantPanda
f84ef95d3c
perf(serializers): optimize channel group counts with queryset annotation fallback
2026-05-02 11:50:13 -05:00
SergeantPanda
133a15496a
perf: optimize ChannelGroup and Channel viewsets for efficient querying and serialization
2026-05-02 11:49:49 -05:00
None
0c0e802cf2
refactor(orphan-cleanup): store as custom_properties mode
...
Drop 3UAccount.auto_cleanup_unused_channels field and its migration (apps/m3u/0020). Replace with a 3-state string under M3UAccount.custom_properties.orphan_channel_cleanup: "always" (default), "preserve_customized", "never".
Move the UI from a checkbox on the M3U account form to a SegmentedControl at the top of LiveGroupFilter. Local state mirrors the prop for immediate click feedback; reverts on API error.
M3UAccountSerializer.update() now merges incoming custom_properties before layering the typed preference fields on top.
Add LiveGroupFilter.test.jsx (5 cases). Replace AutoCleanupToggleTests with OrphanCleanupModeTests (5 cases) for the new 3-state contract.
2026-05-01 23:24:40 -05:00
None
b2b108bfe5
rename Channel.user_hidden to Channel.hidden_from_output
...
The previous name suggested "hidden from a specific user account" rather than "hidden from downstream client output", which was the actual
behavior. The new name is unambiguous and matches the help_text language ("Exclude this channel from downstream client output").
Mechanical rename across the migration, model, serializer, signals, sync logic, output endpoints, frontend forms / tables / utils, tests, and CHANGELOG. 77 occurrences across 20 files.
No behavior change.
2026-05-01 19:44:16 -05:00
None
b9b3ded71c
refactor(migrations): merge channels FR #1196 migrations into single 0037
...
Consolidates 0037_channeloverride_and_user_hidden, 0038_backfill_auto_created_by_null,
0039_channelgroupm3uaccount_auto_sync_channel_end, and 0040_channel_channel_number_nullable
into a single 0037_auto_sync_overhaul migration.
The merged migration runs operations in dependency-respecting order:
1. AddField Channel.user_hidden
2. CreateModel ChannelOverride
3. AddField ChannelGroupM3UAccount.auto_sync_channel_end
4. RunPython backfill_auto_created_by_null
5. AlterField Channel.channel_number (nullable)
6. RunPython noop / reverse_backfill_channel_number_nulls
Also, update CHANGELOG.md and update migration references in test
2026-05-01 18:32:23 -05:00
None
5e50dd8795
Update CHANGELOG.md
2026-05-01 15:25:39 -05:00
None
6fed444e43
feat: Auto-sync overhaul (FR #1196 )
...
Per-field channel overrides for auto-synced channels, hide-from-output flag, range-bounded auto-numbering with re-pack, multi-stream channel safety, multi-provider shared-range merging, and an across-the-board move from per-row sync writes to bulk operations.
Migrations:
apps/channels:
0036_channeloverride_and_user_hidden,
0037_backfill_auto_created_by_null,
0038_channelgroupm3uaccount_auto_sync_channel_end,
0039_channel_channel_number_nullable
apps/m3u:
0020_m3uaccount_auto_cleanup_unused_channels
See CHANGELOG.md for the full commit log
2026-05-01 14:05:06 -05:00
SergeantPanda
37922a44ab
Enhancement: Update user connection reporting in xc_get_info to reflect active connections and max connections based on user stream limits. ( Fixes #990 )
CI Pipeline / prepare (push) Waiting to run
CI Pipeline / docker (amd64, ubuntu-24.04) (push) Blocked by required conditions
CI Pipeline / docker (arm64, ubuntu-24.04-arm) (push) Blocked by required conditions
CI Pipeline / create-manifest (push) Blocked by required conditions
Build and Push Multi-Arch Docker Image / build-and-push (push) Waiting to run
Frontend Tests / test (push) Waiting to run
2026-04-30 20:33:30 -05:00
SergeantPanda
01e356c156
Enhancement: Include channelId in video playback parameters for better tracking
2026-04-30 18:02:40 -05:00
SergeantPanda
a80af16e6a
Enhancement: Implement targeted stream-stats refresh for channel table using a new lightweight delta endpoint
2026-04-30 17:46:49 -05:00
SergeantPanda
022270efa0
changelog: Update changelog for recent changes.
2026-04-30 16:34:55 -05:00
SergeantPanda
8e858045d6
Enhancement: Throttle Redis stats writes in StreamGenerator to reduce traffic during high viewer load
2026-04-30 16:23:51 -05:00
SergeantPanda
a5ac0e78fc
Enhancement: Optimize Redis writes in StreamBuffer by using pipelining for chunk storage and timestamp management
2026-04-30 16:22:36 -05:00
SergeantPanda
f2069caa62
Refactor: Simplify orphaned channel deletion and optimize M3UAccount fetching in send_m3u_update
2026-04-30 16:11:37 -05:00
SergeantPanda
2ef9ab0dcf
Refactor: Remove unused stream deactivation and filtering methods from M3UAccount and M3UFilter classes
2026-04-30 16:01:55 -05:00
SergeantPanda
44b1b3b572
Enhancement: Optimize StreamsTable data fetching by reducing unnecessary requests and improving filter handling
2026-04-30 15:29:00 -05:00
SergeantPanda
db6755a009
Enhancement: Add database index on Stream.name to improve query performance and reduce disk spill during sorting ( Fixes #1209 )
2026-04-30 14:28:26 -05:00
SergeantPanda
3801dd7aab
Security: Implement network access checks for HDHomeRun discovery endpoints and remove dangerouslySetInnerHTML from M3U Profile regex preview to prevent XSS vulnerabilities
2026-04-30 14:03:30 -05:00
SergeantPanda
dd911cc711
Refactor: Remove SSDP advertisement implementation and related code from HDHomeRun app
CI Pipeline / prepare (push) Waiting to run
CI Pipeline / docker (amd64, ubuntu-24.04) (push) Blocked by required conditions
CI Pipeline / docker (arm64, ubuntu-24.04-arm) (push) Blocked by required conditions
CI Pipeline / create-manifest (push) Blocked by required conditions
Build and Push Multi-Arch Docker Image / build-and-push (push) Waiting to run
2026-04-30 12:23:37 -05:00
SergeantPanda
ddb03289b4
Enhancement: Improve plugin discovery process by adding a completion flag and refining in-memory registry handling
2026-04-30 10:33:41 -05:00
SergeantPanda
1e5298a8d3
Bug Fix: Implement Redis locks in run_recording and worker_ready to prevent duplicate ffmpeg processes and ensure single execution across workers
2026-04-30 10:15:03 -05:00
SergeantPanda
2650bee7e9
Merge pull request #1211 from Dispatcharr/watch-live-recordings
...
CI Pipeline / prepare (push) Has been cancelled
Build and Push Multi-Arch Docker Image / build-and-push (push) Has been cancelled
Frontend Tests / test (push) Has been cancelled
CI Pipeline / docker (amd64, ubuntu-24.04) (push) Has been cancelled
CI Pipeline / docker (arm64, ubuntu-24.04-arm) (push) Has been cancelled
CI Pipeline / create-manifest (push) Has been cancelled
Enhance DVR functionality with HLS support and improved queue management
2026-04-26 13:35:02 -05:00
SergeantPanda
c83e2be866
Enhancement: Refactor FloatingVideo component to improve JWT handling and ensure playback starts from the beginning of recordings
2026-04-26 13:28:13 -05:00
SergeantPanda
1eda68db7a
Enhancement: Refactor run_recording to improve directory handling and remove unused cancellation check
2026-04-26 13:27:50 -05:00
SergeantPanda
a7b8e54747
Enhancement: Refactor HLS handling in RecordingViewSet and implement cleanup for empty parent directories
2026-04-26 13:27:32 -05:00
SergeantPanda
4f0312b44b
changelog: Update changelog to document security improvements and new features for DVR recording playback
2026-04-26 12:33:58 -05:00
SergeantPanda
0cca34a2dc
Enhancement: Implement user authorization for recording playback and inject JWT into HLS requests
2026-04-26 12:25:05 -05:00
SergeantPanda
8a89f43afd
Enhancement: Ensure playback starts from the beginning of the seekable range for live and recorded streams
2026-04-26 11:54:01 -05:00
SergeantPanda
aa693f7a6a
Enhancement: Integrate HLS.js for improved handling of live and recorded streams
2026-04-26 11:48:02 -05:00
SergeantPanda
914c612db9
Enhancement: Implement network access checks for streaming and update recording status handling during worker shutdown
2026-04-26 11:40:46 -05:00
SergeantPanda
76f2f2abc4
changelog: Update changelog for DVR enahncements
2026-04-26 10:21:40 -05:00
SergeantPanda
c956672587
Enhancement: Route long-running DVR recordings to a dedicated queue.
2026-04-26 09:34:20 -05:00
SergeantPanda
14a6bf4473
Initial DVR HLS refactor.
2026-04-26 09:06:48 -05:00
SergeantPanda
d77eb9e2ec
tests: Update channel stats test to include clients in channel data
CI Pipeline / prepare (push) Has been cancelled
Build and Push Multi-Arch Docker Image / build-and-push (push) Has been cancelled
Frontend Tests / test (push) Has been cancelled
CI Pipeline / docker (amd64, ubuntu-24.04) (push) Has been cancelled
CI Pipeline / docker (arm64, ubuntu-24.04-arm) (push) Has been cancelled
CI Pipeline / create-manifest (push) Has been cancelled
2026-04-23 19:37:46 -05:00
SergeantPanda
972d214631
tests: Fix stats test
2026-04-23 19:30:39 -05:00
SergeantPanda
29739ede36
Enhancement: VOD start/stop notifications and system events.
CI Pipeline / prepare (push) Waiting to run
CI Pipeline / docker (amd64, ubuntu-24.04) (push) Blocked by required conditions
CI Pipeline / docker (arm64, ubuntu-24.04-arm) (push) Blocked by required conditions
CI Pipeline / create-manifest (push) Blocked by required conditions
Build and Push Multi-Arch Docker Image / build-and-push (push) Waiting to run
Frontend Tests / test (push) Waiting to run
2026-04-23 18:03:02 -05:00
SergeantPanda
60e82b7b01
Enhancement: Add formatExactDuration utility for improved duration formatting in seconds, minutes, hours, and days; update StreamConnectionCard to utilize new formatting function for duration tooltip.
2026-04-23 11:19:11 -05:00
SergeantPanda
eb9dd391d5
Enhancement: Consolidate client connection notifications and update timestamp handling; replace 'connected_since' with 'connected_at' for improved accuracy in duration calculations.
2026-04-23 11:03:02 -05:00
SergeantPanda
efefd9038f
tests: Update StreamConnectionCard tests to mock users store and adjust state implementations
CI Pipeline / prepare (push) Waiting to run
CI Pipeline / docker (amd64, ubuntu-24.04) (push) Blocked by required conditions
CI Pipeline / docker (arm64, ubuntu-24.04-arm) (push) Blocked by required conditions
CI Pipeline / create-manifest (push) Blocked by required conditions
Build and Push Multi-Arch Docker Image / build-and-push (push) Waiting to run
Frontend Tests / test (push) Waiting to run
2026-04-22 17:23:02 -05:00
SergeantPanda
09a43e4d81
tests: Update mock implementation in StreamConnectionCard tests to include profiles in playlists store
2026-04-22 16:18:01 -05:00
SergeantPanda
29228612aa
perf/fix: eliminate per-tick DB queries in stats; fix channel notifications
...
CI Pipeline / prepare (push) Waiting to run
CI Pipeline / docker (amd64, ubuntu-24.04) (push) Blocked by required conditions
CI Pipeline / docker (arm64, ubuntu-24.04-arm) (push) Blocked by required conditions
CI Pipeline / create-manifest (push) Blocked by required conditions
Build and Push Multi-Arch Docker Image / build-and-push (push) Waiting to run
Frontend Tests / test (push) Waiting to run
- Write channel_name (and stream_name fallback) into Redis metadata at
channel init time; read directly from Redis in get_basic_channel_info,
removing Stream and M3UAccountProfile DB queries on every stats tick
- Pass channel.name from views.py into ChannelService.initialize_channel
via new optional channel_name param, skipping the redundant Channel DB
lookup on the normal streaming path
- Pass stream_name from get_stream_info_for_switch through change_stream_url
into _update_channel_metadata, skipping the Stream DB lookup on switches
- Resolve m3u_profile_name on the frontend from the playlists store instead
of querying the DB per tick; StreamConnectionCard builds an id→profile map
- Fix channel start notification showing no name and stop notification
showing UUID: both now use channel_name from the stats WebSocket payload
2026-04-21 18:55:38 -05:00
SergeantPanda
625dab0357
Enhancement: The default profile in the M3U profiles editor now exposes Search Pattern and Replace Pattern fields
CI Pipeline / prepare (push) Waiting to run
CI Pipeline / docker (amd64, ubuntu-24.04) (push) Blocked by required conditions
CI Pipeline / docker (arm64, ubuntu-24.04-arm) (push) Blocked by required conditions
CI Pipeline / create-manifest (push) Blocked by required conditions
Build and Push Multi-Arch Docker Image / build-and-push (push) Waiting to run
Frontend Tests / test (push) Waiting to run
2026-04-21 17:20:45 -05:00
SergeantPanda
8a15f3477f
Bug Fix: Creating a new channel group from within the channel create/edit form no longer wipes all filled-in form fields. ( Fixes #545 )
2026-04-21 12:31:30 -05:00
SergeantPanda
6d3616d524
Enhancement: Adjust column sizes in user table.
2026-04-21 11:27:50 -05:00
SergeantPanda
862abb0d57
Bug fix: Move the XCPasswordCell to its own component. This is required after our table optimizations.
2026-04-21 11:23:17 -05:00