damien-alt-sudo
6f99d8ea85
Styling fix UsersTable.jsx
2026-04-18 18:59:20 +01:00
Damien
f403b5c97a
Merge branch 'Dispatcharr:main' into feature-819-UserTableUpdate
2026-04-18 11:45:47 +01:00
GitHub Actions
9914e65c4c
Release v0.23.0
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) Has been cancelled
Frontend Tests / test (push) Has been cancelled
2026-04-17 00:24:03 +00:00
SergeantPanda
d6c551a381
Merge pull request #1198 from Dispatcharr/dev
...
Dispatcharr - v0.23.0
2026-04-16 19:14:24 -05:00
SergeantPanda
6cd6d3ef9a
Enhancement: - **Output bitrate DB persistence**: the ffmpeg_output_bitrate stat is no longer written to the database on every FFmpeg stats tick (~2/second). Instead, a local exponential moving average (EMA, α=0.1) accumulates readings continuously. The first 10 samples (~5 seconds) are discarded as warmup to avoid polluting the average with FFmpeg's unstable ramp-up values. After warmup, the smoothed value is flushed to the database at most once every 30 seconds, and a final flush occurs when the stream stops but only if the EMA has been seeded (i.e. the stream ran past warmup). Streams that stop during warmup leave the existing database value untouched, preserving previously accurate measurements when channel-hopping.
2026-04-16 17:15:54 -05:00
SergeantPanda
a0f27d8116
Enhancement: Add debouce for plugin repo refresh interval setting.
2026-04-16 14:38:04 -05:00
SergeantPanda
54ab3e8981
performance:
...
- Performance: `xc_get_epg` now uses `select_related('epg_data__epg_source')` on all three channel fetch paths. Previously each request triggered 2 additional queries to resolve `channel.epg_data` and `channel.epg_data.epg_source`.
- Performance: `generate_m3u` now uses `prefetch_related` for streams when `?direct=true` is requested, eliminating N+1 stream queries (one per channel) on that code path.
- Performance: `EPGGridAPIView` (`apps/epg/api_views.py`) now uses `select_related('epg_data__epg_source')` on the `channels_with_custom_dummy` queryset, eliminating 2 extra queries per channel (for `epg_data` and `epg_source`) in the dummy EPG generation loop.
2026-04-16 13:19:19 -05:00
SergeantPanda
16984bc386
performance:
...
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
- `generate_epg` now uses `select_related('epg_data__epg_source')` on all EPG channel querysets
- `generate_epg` now issues a single cross-channel `ProgramData` bulk query. `.values()` returns plain dicts
- `xc_get_live_streams` no longer calls `ChannelGroup.objects.get_or_create(name="Default Group")` once per null-group channel
2026-04-16 11:12:53 -05:00
SergeantPanda
aab30a3f50
changelog: Update changelog for views performance pr.
2026-04-14 17:55:30 -05:00
SergeantPanda
ebfd974fd8
Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into dev
2026-04-14 17:50:35 -05:00
SergeantPanda
04ce2dacd1
Merge pull request #1165 from xBOBxSAGETx:perf/select-related-channel-queries
...
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
Add select_related to Channel queries in output views
2026-04-14 17:50:10 -05:00
SergeantPanda
dec4652ae8
changelog: fix terminology.
2026-04-14 17:07:51 -05:00
SergeantPanda
44d86ebfc0
Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into dev
2026-04-14 17:07:20 -05:00
SergeantPanda
d4262960c2
changelog: Update changelog for DVR PR.
2026-04-14 17:07:07 -05:00
SergeantPanda
50ec5d9f1a
Merge pull request #1143 from fezster/1140---EPG-Record-specific-channel
...
1140: EPG Record - select channel number explicitly rather than use tvgId
2026-04-14 17:04:32 -05:00
SergeantPanda
e603ff7a49
fix(migration): Fix plugin repo migration that specified AutoField for id instead of BigAutoField.
2026-04-14 16:36:16 -05:00
SergeantPanda
d4a4c99744
Merge pull request #1157 from JCBird1012/postgres-unix-socket
...
perf: use PostgreSQL Unix socket for AIO
2026-04-14 16:20:23 -05:00
SergeantPanda
dbf40fe687
changelog: changelog for PG socket PR
2026-04-14 16:04:24 -05:00
SergeantPanda
1289e95c93
Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into pr/JCBird1012/1157
2026-04-14 15:57:48 -05:00
SergeantPanda
d5e6ee0a0d
Enhancement: Use Unix socket if AIO and POSTGRES_HOST is set to loopback.
2026-04-14 15:51:40 -05:00
SergeantPanda
1cd557062e
changelog: Update changelog for nginx/logo cache changes.
2026-04-14 15:13:35 -05:00
SergeantPanda
c4972f7dc9
fix: clear previous failure entries after successful logo fetch in LogoViewSet and VODLogoViewSet
2026-04-14 13:34:17 -05:00
SergeantPanda
978714a74d
fix: improve remote logo fetching with timeout and caching for failures
2026-04-14 13:04:45 -05:00
SergeantPanda
c819a95cb5
fix: update API cache locations and improve proxy settings
2026-04-14 12:59:58 -05:00
SergeantPanda
a756719cf1
changelog: Update changelog for docker stop PR.
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-13 20:32:34 -05:00
SergeantPanda
c56fa7a6b8
Merge pull request #1191 from Shokkstokk:fix/graceful-shutdown-exit-137
...
fix: graceful container shutdown - exit 137 on docker stop
2026-04-13 20:29:44 -05:00
SergeantPanda
6ad1207a0b
fix: graceful container shutdown and cleanup improvements
...
- Explicitly stop uwsgi, celery, daphne, and redis-server on SIGTERM;
these are spawned as uwsgi attach-daemons and were not tracked in
pids[], causing exit 137 on docker stop
- Replace fixed sleep 3 with a polling loop (8 s ceiling) that exits as
soon as all processes have stopped
- Use pg_ctl stop -m immediate as the postgres force-stop fallback
instead of SIGKILL to avoid data corruption
- Add _cleanup_done guard to prevent double invocation of cleanup() when
the trap fires and the explicit call at script end both execute
- Register process names at startup in pid_names[] so crash diagnostics
show meaningful names after a process has exited
- Suppress the unexpected-exit diagnostic block on normal docker stop
- Guard all pgrep-based pids+=() against empty values (nginx, vite,
postgres) to prevent empty PID entries corrupting the pids[] array
2026-04-13 20:21:01 -05:00
SergeantPanda
f98bb183da
Bug Fix: Fixed a provider TCP connection leak in the VOD proxy
2026-04-13 19:33:22 -05:00
SergeantPanda
a3f7d465d5
Merge pull request #1125 from firestaerter3:fix/vod-profile-connections-race-conditions
...
fix(vod-proxy): eliminate profile_connections counter stuck-at-nonzero races
2026-04-13 19:11:12 -05:00
SergeantPanda
55048b60e3
fix(vod-proxy): prevent double profile decrement and clean up stream counter naming
2026-04-13 18:40:33 -05:00
SergeantPanda
d73071b20f
Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into pr/firestaerter3/1125
2026-04-13 17:42:43 -05:00
SergeantPanda
f8407610c8
Bug Fix/Enhancement: Improve logic for get xc epg endpoint for short epgs. Also support epg_days from xc user for xc epg endpoint.
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) Has been cancelled
2026-04-12 18:51:40 -05:00
SergeantPanda
9f3d4ff7ff
Enhancement: Improved the EPG response cache key
2026-04-12 18:19:19 -05:00
SergeantPanda
62848c0ea0
Enhancement: Improved the HDHR, M3U, and EPG URL builder popovers in the Channels table
2026-04-12 17:24:17 -05:00
SergeantPanda
95fba1cb84
Bug Fix: Fixed the XC Password field in the User modal being editable by standard users
2026-04-12 16:45:58 -05:00
SergeantPanda
123509eb9d
Enhancement: Redesigned the User settings modal with a tabbed layout
2026-04-12 16:39:35 -05:00
SergeantPanda
ba967f47d9
Enhancement: **EPG historical data window**: the EPG XML output and XC EPG API now support a prev_days URL parameter (e.g. &prev_days=3) to include past programs in the EPG response. This allows third-party players that request historical program schedules to receive the data they need. The EPG URL builder in the Channels page exposes "Days forward" and "Days back" controls. Per-user defaults for both values (epg_days / epg_prev_days) can be configured in the User settings modal and are applied automatically when no URL parameter is present. ( Closes #1154 )
2026-04-12 16:34:15 -05:00
SergeantPanda
a83b9fdf62
Enhancement: EPG channel scanning now automatically removes stale EPGData entries.
2026-04-12 15:37:28 -05:00
SergeantPanda
298ca3260e
tests: Update frontend tests for recent frontend changes (Floating Video Player and Stream Connection Card)
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-12 12:37:02 -05:00
SergeantPanda
e69a8f3449
Bug Fix: Stats page "Active Stream" dropdown not updating when a stream switch occurs
2026-04-12 12:28:39 -05:00
SergeantPanda
b629836b3d
Bug Fix: Fixed stream switch metadata (url, user_agent, stream_id, m3u_profile) being written to Redis before the switch was confirmed to succeed
2026-04-12 12:02:20 -05:00
SergeantPanda
65d14644b4
Bug Fix: Fixed the next_stream rotation endpoint applying the same class of bug
2026-04-12 11:36:08 -05:00
SergeantPanda
ef030b3da0
Bug Fix: Manual stream selection from the Stats page not enforcing M3U profile connection limits in multi-worker deployments
2026-04-12 10:03:46 -05:00
SergeantPanda
ad46a10ce6
Bug Fix: Uploading a local M3U file with no expiration date set sending the string "null" as the exp_date field in the FormData request, causing a 400 validation error from the API. Null/undefined values are now skipped when building the FormData body, matching the behaviour already present in the update path.
2026-04-12 09:04:49 -05:00
SergeantPanda
f1a82e8843
Bug Fix: Fixed several incorrect or incomplete OpenAPI (@extend_schema) schemas across the API
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-11 17:02:07 -05:00
SergeantPanda
1adbc70f53
Bug Fix: Fix bulk channel edit API when including streams array. ( Fixes #883 )
2026-04-11 16:11:45 -05:00
SergeantPanda
bfec229ca9
Enhancements:
...
- Rewrote the M3U line parser as an `iter_m3u_entries` generator that owns the full per-entry state machine. Intermediate directive lines between `#EXTINF` and the stream URL are now handled correctly rather than corrupting the pending entry or being silently misassigned. A `#EXTINF` with no following URL is discarded with a warning instead of carrying over a `url`-less entry into batch processing. Attribute keys are normalised to lowercase during parsing (provider attribute names remain case-insensitive end-to-end). The `#EXTINF` attribute regex is pre-compiled at module load, and attribute lookups use O(1) `dict.get()` instead of linear scans — approximately 10% faster parsing on large M3U files.
- Added support for the `#EXTGRP` directive in M3U files. When a `group-title` attribute is absent from the `#EXTINF` line, the value from a following `#EXTGRP:` line is used as the group. An explicit `group-title` attribute always takes priority. (Closes #1088 )
- Added accumulation of `#EXTVLCOPT` directives per entry. Options are stored as a list under `vlc_opts` inside the stream's `custom_properties`, available for downstream use (e.g. passing VLC-specific options to the player). This is for a planned future enhancement and can also be utlized with the API.
2026-04-11 14:57:52 -05:00
SergeantPanda
fd7ac0029d
Enhancement: M3U stream name parsing now uses the comma text (the canonical display title per the base #EXTINF spec) as the primary stream name, falling back to tvc-guide-title, then tvg-name, rather than preferring tvg-name first. Providers that use tvg-name as an EPG key and put the human-readable title after the comma will now display the correct name. Providers that duplicate the same value in both fields are unaffected. ( Fixes #1081 )
2026-04-11 12:46:36 -05:00
SergeantPanda
4a6724c94b
Enhancement: FloatingVideo player: the native video controls (timeline, play/pause, volume) are now hidden by default when a live stream starts and only appear when the user hovers over the player.
2026-04-11 09:34:38 -05:00
SergeantPanda
8afaa01184
security: Extended rate limiting to the session-auth login alias (POST /api/accounts/auth/login/). It now delegates entirely to TokenObtainPairView, inheriting its throttle, network access check, and audit logging, and returns JWT tokens instead of a session cookie (the session-based response was unusable since SessionAuthentication is not in DEFAULT_AUTHENTICATION_CLASSES). Both endpoints share the same "login" throttle scope, so attempts across either path count against the same per-IP limit.
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-10 19:54:10 -05:00