Commit graph

3929 commits

Author SHA1 Message Date
GitHub Actions
c1a28863c6 Release v0.28.1
Some checks failed
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
Backend Tests / Plan test groups (push) Has been cancelled
Build and Push Multi-Arch Docker Image / build-and-push (push) Has been cancelled
Backend Tests / (push) Has been cancelled
2026-07-20 16:22:53 +00:00
SergeantPanda
67ccbd70bc
Merge pull request #1461 from Dispatcharr/dev
Dev
2026-07-20 11:21:40 -05:00
SergeantPanda
e94a1acc1c refactor(core): Remove redundant cache imports in CoreSettings model
Some checks are pending
Backend Tests / Plan test groups (push) Waiting to run
Backend Tests / (push) Blocked by required conditions
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-07-20 15:59:44 +00:00
SergeantPanda
524ee6d479 tests: Fix backend test. 2026-07-20 15:44:41 +00:00
SergeantPanda
172967c2fd fix(core): Enhance CoreSettings caching with Redis error handling
This update introduces robust error handling for Redis connectivity issues in the CoreSettings model. It adds methods to gracefully fall back to Postgres when Redis is unavailable, ensuring that settings reads and invalidations do not fail. New logging functionality has been implemented to warn when the cache degrades to Postgres, and tests have been added to verify the behavior under various failure scenarios. This enhancement improves the resilience of the caching mechanism and maintains application stability during Redis outages.
2026-07-20 15:35:52 +00:00
SergeantPanda
0bb58542a5 Merge branch 'main' of https://github.com/Dispatcharr/Dispatcharr into dev
Some checks failed
Backend Tests / Plan test groups (push) Waiting to run
Backend Tests / (push) Blocked by required conditions
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-07-19 22:02:32 +00:00
GitHub Actions
df53439789 Release v0.28.0
Some checks failed
Backend Tests / Plan test groups (push) Waiting to run
Backend Tests / (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-07-19 21:58:10 +00:00
SergeantPanda
532ac1ccfd test: Fix timeshift test for is_catchup_enabled 2026-07-19 21:57:01 +00:00
SergeantPanda
5e4441804c test: Fix timeshift test for is_catchup_enabled 2026-07-19 21:56:13 +00:00
SergeantPanda
ce6b0099a1
Merge pull request #1457 from Dispatcharr/dev
# Dispatcharr - v0.28.0
2026-07-19 16:47:29 -05:00
SergeantPanda
019e38fa70
Merge branch 'main' into dev 2026-07-19 16:46:17 -05:00
SergeantPanda
b1801cb92a tests: Fix test failing from other tests running. 2026-07-19 19:34:02 +00:00
SergeantPanda
5f603ac7b7 tests: Fix confirmationdialog test ESlint error. 2026-07-19 19:28:11 +00:00
SergeantPanda
7e2765733b fix(channel-deletion): implement optional stream stopping during channel deletion (Fixes #870)
This update introduces functionality to stop active proxy sessions for channels before their deletion, addressing issues where streams could hang without a corresponding channel. The `stop_stream` query parameter allows users to choose whether to stop the stream during manual deletes, while automated sync deletes will always stop streams. The implementation includes updates to the API views, service methods, and tests to ensure proper functionality. Additionally, the confirmation dialog and related components have been updated to reflect this new behavior, enhancing user experience during channel management.
2026-07-19 19:25:32 +00:00
SergeantPanda
3749953c2c feat(confirmation-dialog): add stop stream option to confirmation dialog
This update enhances the ConfirmationDialog component by introducing an option to stop the active stream when confirming actions. The new checkbox allows users to choose whether to stop the stream if it is playing, with the preference being remembered for future confirmations. The implementation includes updates to the state management and effects to handle the new option, as well as corresponding tests to ensure functionality. Additionally, the ChannelsTable component has been updated to utilize this new feature, improving user experience during channel deletions.
2026-07-19 18:52:34 +00:00
SergeantPanda
3011946c56 fix(cron): enhance hourly cron presets with step intervals (Fixes #1320)
This update introduces a new feature in the CronBuilder component, allowing users to select step-based intervals (e.g., every 6/12 hours) for hourly cron expressions. The changes include the addition of an Interval dropdown for hourly frequency, which loads presets and maintains the step pattern during edits. The buildCron utility has been updated to accommodate the new hours parameter, and tests have been added to ensure proper functionality and validation of the new presets. This enhancement improves user experience and flexibility in scheduling tasks.
2026-07-19 18:04:38 +00:00
SergeantPanda
b30e953483 changelog: Link issue. 2026-07-19 17:22:38 +00:00
SergeantPanda
559151585e fix(redis): extend TTL for fMP4 and profile output keys during long sessions
Some checks are pending
Backend Tests / Plan test groups (push) Waiting to run
Backend Tests / (push) Blocked by required conditions
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
This update addresses the issue of Redis keys for fMP4 and profile outputs expiring during extended sessions. The TTL for these keys is now refreshed approximately every minute while the remux or transcode is active, preventing loss of coordination keys for long-running sessions. Additionally, the initialization process for both fMP4 and profile managers has been updated to ensure that TTLs are managed effectively, enhancing reliability and stability during playback. Tests have been updated to validate these improvements.
2026-07-19 16:39:22 +00:00
SergeantPanda
6c9cb30a90
Merge pull request #1456 from Dispatcharr/fix/ghost-initializing-root-cause
fix(live): prevent ghost channel sessions from blocking playback indefinitely
2026-07-19 11:11:54 -05:00
SergeantPanda
820959e390 fix(live): prevent ghost channel sessions from blocking playback indefinitely
This update resolves an issue where ghost channel sessions stuck in the `initializing` state could block playback requests indefinitely. The initialization process now ensures that the `initializing` state is only written to Redis after acquiring the channel ownership lock, preventing race conditions that could leave sessions without an owner. Additionally, failed initializations are cleaned up immediately, allowing subsequent play requests to retry without hitting a stopping gate. The changes enhance the reliability of channel initialization and playback handling. Tests have been updated to validate these improvements.
2026-07-19 16:08:24 +00:00
SergeantPanda
21901498de fix(connections): ensure proper cleanup of geventpool checkouts across various components
This update addresses issues related to geventpool database connection leaks by consistently invoking `close_old_connections()` in `finally` blocks within the backup scheduler, plugin repository refresh, and core notification synchronization processes. These changes ensure that idle connections are properly released, preventing resource exhaustion. HLS proxy server has been disabled (hasn't been used). Additionally, the proxy server cleanup logic has been enhanced to safely handle the absence of proxy instances. Tests have been updated to validate these improvements and ensure stability in high-load scenarios.
2026-07-19 14:32:51 +00:00
SergeantPanda
64912c6164 fix(live): prevent geventpool DB connection leaks and enhance channel name resolution (Fixes #1418)
This update addresses a critical issue where geventpool database connections were not properly released during stream setup and teardown, potentially leading to resource exhaustion. The `close_old_connections()` method is now consistently called in `finally` blocks across various components, ensuring that connections are released even in the event of exceptions. Additionally, the logic for resolving channel and stream names has been improved to prioritize caller-supplied names and Redis values, reducing reliance on ORM during initialization. This change enhances performance and stability, particularly in high-load scenarios. Tests have been updated to validate these improvements.
2026-07-19 14:06:14 +00:00
SergeantPanda
cdba6dac84 tests: Fix logo tests.
Some checks are pending
Backend Tests / Plan test groups (push) Waiting to run
Backend Tests / (push) Blocked by required conditions
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-07-18 20:20:20 +00:00
SergeantPanda
66089f14ee refactor(permissions): enhance permission handling across various viewsets
This update modifies permission classes in multiple viewsets to restrict access based on user roles. The `IsAdmin` permission is now enforced for several actions, including group management and permission listing, ensuring that only administrators can perform sensitive operations. Additionally, a new utility function, `resolve_safe_local_data_path`, is introduced to enhance security when accessing local file paths. The changes improve overall security and maintainability of the codebase.
2026-07-18 20:03:03 +00:00
SergeantPanda
b6442e6421 feat(catchup): enhance catchup functionality with user and system settings
This update introduces a new `is_catchup_enabled` function to determine if catch-up is allowed for users based on their custom properties and system settings. The `UserViewSet` is modified to restrict admin-managed properties, including catch-up access. Additionally, various views and tests are updated to incorporate catch-up checks, ensuring that users without access receive appropriate error responses. The frontend is enhanced with a catch-up toggle in user and system settings forms, allowing for better management of catch-up capabilities.
2026-07-18 18:55:51 +00:00
SergeantPanda
2b62928b42 feat(settings): implement Redis caching for CoreSettings and enhance network access handling
This update introduces Redis caching for grouped settings in the CoreSettings model, improving performance by reducing database queries. A new method, `get_network_access_settings`, is added to streamline access to network settings. Additionally, the `setting_flag_enabled` function is introduced to handle boolean settings more robustly. The cache is invalidated on save and delete operations, ensuring data consistency. Tests have been added to validate the caching behavior and the new settings functionality.
2026-07-18 17:33:02 +00:00
SergeantPanda
f9a2968ec5 feat(range): add full restart range detection and enhance plain reconnect logic
Some checks are pending
Backend Tests / Plan test groups (push) Waiting to run
Backend Tests / (push) Blocked by required conditions
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
This update introduces a new helper function `_is_full_restart_range` to determine when a request indicates a full restart from byte 0. The existing `_should_preempt_plain_reconnect` function has been modified to utilize this new logic, ensuring that plain GET requests and open-ended byte ranges are handled correctly. Additionally, new tests have been added to validate the behavior of these functions, confirming that they correctly identify restart scenarios and preempt playback as expected.
2026-07-18 00:43:09 +00:00
SergeantPanda
0aed30253b refactor(stats): simplify channel logo handling in stats data
This update refactors the logic for building timeshift statistics by removing unnecessary `select_related` calls and the `logo_url` field from the connections. The changes streamline the data retrieval process and ensure that only the `logo_id` is exposed in the session data. Corresponding tests have been updated to reflect these modifications.
2026-07-17 23:21:44 +00:00
SergeantPanda
b24f39d9f8 fix(timestamps): enhance timestamp parsing to support mixed separators
This update modifies the timestamp parsing logic to accommodate various formats, including those using both dash and colon as separators for hours, minutes, and seconds. The changes ensure that timestamps like "HH-MM-SS" and mixed formats such as "HH-MM:SS" are correctly parsed and normalized. Additional tests have been added to validate these new parsing capabilities.
2026-07-17 22:53:21 +00:00
SergeantPanda
a40ac78ffd fix(live): resolve Redis state latching issue during buffering-timeout failover (Fixes #1449)
This update ensures that the Redis state for live channels is correctly cleared when a buffering-timeout failover occurs. Previously, the in-memory buffering flag could be cleared without updating Redis, leading to incorrect state reporting. The fix modifies the logic to clear the Redis state to 'active' when the buffering flag is reset, preventing stale 'buffering' states from persisting after recovery. Tests have been updated to validate this behavior.
2026-07-17 22:31:42 +00:00
SergeantPanda
8303ce27ee fix(plugins): improve plugin discovery in multi-worker setups (Fixes #1452)
This change ensures that plugin discovery does not force-reload on every connect event in multi-worker environments. By allowing local reloads in response to a newer `.reload_token`, the update prevents stale token issues that previously led to degraded worker performance. The explicit `force_reload=True` option is retained for installations, updates, or reloads, ensuring better resource management and stability. Tests have been updated to reflect this behavior.
2026-07-17 22:16:47 +00:00
SergeantPanda
692f2d27c1 fix(channels): update "Copy URL" functionality to exclude web player parameters
This change modifies the "Copy URL" action in the Channels table to generate a plain proxy URL without including web player output profile parameters. The update ensures that copied links are suitable for external players, enhancing usability. Additionally, tests have been updated to verify the new behavior of the "Copy URL" feature.
2026-07-17 21:52:47 +00:00
SergeantPanda
84d2aedae5 fix(vod): prevent stale profile connection reservations in Redis-backed VOD sessions (Fixes #1426)
This update introduces atomic mutations for active_streams using Redis Lua scripts, ensuring that concurrent byte-range requests do not leave stale session metadata. The changes also include improvements to the session state saving mechanism, preventing the recreation of zombie sessions after idle cleanup. Additionally, tests have been added to cover the new atomic behavior and ensure reliability across various scenarios.
2026-07-17 21:35:32 +00:00
SergeantPanda
a78bc7aa48 changelog: Link issue. 2026-07-17 18:56:42 +00:00
SergeantPanda
02268bbd9e
Merge pull request #1445 from nagelm/fix/db-session-timezone-startup-packet
fix(db): pin session timezone to UTC via libpq startup packet (#651)
2026-07-17 13:34:15 -05:00
SergeantPanda
31f448c673 changelog: add clarity. 2026-07-17 18:33:42 +00:00
SergeantPanda
fc8b955b36 changelog: Update for pr 1445. 2026-07-17 16:46:39 +00:00
SergeantPanda
5714cf23cf Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into pr/nagelm/1445 2026-07-17 16:00:11 +00:00
SergeantPanda
097e7118ef Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into dev
Some checks are pending
Backend Tests / Plan test groups (push) Waiting to run
Backend Tests / (push) Blocked by required conditions
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-07-17 15:45:34 +00:00
SergeantPanda
52c97120fb
Merge pull request #1442 from nagelm/fix/machine-independent-date-tests
test(frontend): make date assertions machine-independent
2026-07-17 10:45:02 -05:00
SergeantPanda
9da83d76fa changelog: Update for pr 1442 2026-07-17 15:44:25 +00:00
SergeantPanda
b91385aacb Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into pr/nagelm/1442 2026-07-17 15:40:28 +00:00
SergeantPanda
1f30e2076d
Merge pull request #1441 from nagelm/fix/toast-html-error-bodies
fix(ui): stop rendering raw HTML error pages in toast notifications (#1261, item 1)
2026-07-17 10:33:36 -05:00
SergeantPanda
5263e18ed9 fix(api): improve error handling for API responses
- Enhanced the `formatApiError` function to better format failed API responses, preventing raw HTML error pages from being displayed in toasts. JSON error bodies are now prioritized for user-friendly messages, while HTML and empty bodies are collapsed to a concise status line. Long plain-text bodies are truncated for readability.
- Updated tests to cover new error formatting behavior, ensuring accurate extraction of error messages from various JSON structures.
2026-07-17 15:31:56 +00:00
SergeantPanda
9ee5ba2535 Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into pr/nagelm/1441 2026-07-17 15:19:35 +00:00
SergeantPanda
6157bc1177 changelog: update for url validation pr. 2026-07-17 14:04:03 +00:00
SergeantPanda
42248743fa
Merge pull request #1381 from recurst/patch-1
Allow underscores in non-FQDN hostnames
2026-07-17 09:01:13 -05:00
SergeantPanda
540f3d9bed Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into dev 2026-07-17 13:57:34 +00:00
SergeantPanda
61df45c895 changelog: Update for frontend test/refactor pr. 2026-07-17 13:56:26 +00:00
SergeantPanda
1b99f105c4
Merge pull request #1444 from nick4810/tests/frontend-unit-tests
Tests/frontend unit tests
2026-07-17 08:52:42 -05:00