Commit graph

1297 commits

Author SHA1 Message Date
SergeantPanda
1ab1f638a3 tests: Fix frontend test for sidebar.
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
Build and Push Multi-Arch Docker Image / build-and-push (push) Waiting to run
Frontend Tests / test (push) Has been cancelled
2026-05-21 17:08:01 -05:00
SergeantPanda
f416c7c251 Enhancement: add About modal with version info and community links; refactor SVG icons into separate module 2026-05-21 16:00:52 -05:00
SergeantPanda
e0bb2d925e Enhancement: implement Shift+click and Ctrl+click row selection in tables for improved user interaction
Some checks are pending
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-05-20 17:27:32 -05:00
SergeantPanda
821dccc380 Enhancement: update cursor styles for shift key active state to improve user experience 2026-05-20 17:22:42 -05:00
SergeantPanda
429a6a6bdc tests: Fixed DVR settings form test. 2026-05-20 16:52:18 -05:00
SergeantPanda
fb89a7c977 Enhancement: refactor ChannelsTable and CustomTable components for improved selection handling and performance
Bug Fix: Shift select on channel table.
2026-05-20 16:46:32 -05:00
SergeantPanda
f84265f2a5 Enhancement: add Comskip mode and hardware acceleration settings to DVR configuration. Update default comskip config.
Some checks are pending
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-05-19 21:14:06 -05:00
SergeantPanda
594596d4f5 Enhancement: update channel card tooltip to use stable 'started_at' timestamp and refactor getStartDate utility
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
Build and Push Multi-Arch Docker Image / build-and-push (push) Waiting to run
Frontend Tests / test (push) Waiting to run
Base Image Build / prepare (push) Has been cancelled
Base Image Build / docker (amd64, ubuntu-24.04) (push) Has been cancelled
Base Image Build / docker (arm64, ubuntu-24.04-arm) (push) Has been cancelled
Base Image Build / create-manifest (push) Has been cancelled
2026-05-19 14:37:33 -05:00
SergeantPanda
34bfaa0ed7 fix: improve RegexPreviewBox layout and ensure proper overflow handling
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
Build and Push Multi-Arch Docker Image / build-and-push (push) Waiting to run
Frontend Tests / test (push) Has been cancelled
2026-05-16 11:52:52 -05:00
SergeantPanda
c33d456743 Enable gevent in uWSGI workers; fix WS delivery and DB exhaustion
- Enable gevent cooperative multitasking in all uWSGI worker configs
  (gevent-early-monkey-patch + import dispatcharr.gevent_patch)
- Rewrite WebSocket group sends to bypass asyncio in gevent workers:
  _gevent_ws_send() replicates the channels_redis 4.x wire format
  directly via synchronous Redis so send_websocket_update() and
  _send_async() no longer fail silently after epoll is patched out
- Fix PostgreSQL connection exhaustion: CONN_MAX_AGE=0 + explicit
  close_old_connections() in stream manager and cleanup watchdog loops
- Fix stream proxy race: register client before the connect-wait loop
  so the cleanup watchdog never sees zero clients on a live channel
- Channel list/logo/profile queryset optimisations: conditional DISTINCT,
  EXISTS semi-joins for filter-options, channel_count annotation to
  eliminate N+1 in LogoSerializer, prefetched memberships in
  ChannelProfileSerializer
- JsonResponse for channel ID list and summary endpoints
2026-05-14 18:55:09 -05:00
SergeantPanda
705fb6bd66 fix: Refactor getChannelURL and handleWatchStream for proper URL copying
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
Build and Push Multi-Arch Docker Image / build-and-push (push) Waiting to run
Frontend Tests / test (push) Has been cancelled
2026-05-12 21:17:13 -05:00
SergeantPanda
21b32f302c
Merge pull request #1219 from nick4810/tests/frontend-unit-tests
Tests/frontend unit tests
2026-05-12 10:33:50 -05:00
SergeantPanda
30e39de568 tests: Update tests after settings refactor. 2026-05-12 09:34:58 -05:00
Nick Sandstrom
861bcee537 Merge remote-tracking branch 'upstream/dev' into tests/frontend-unit-tests 2026-05-11 21:05:25 -07:00
Nick Sandstrom
4dace2d333 Minor formatting changes 2026-05-11 20:53:26 -07:00
Nick Sandstrom
64f19237f9 Splitting up LiveGroupFilter component
Added AutoSyncBasic, AutoSyncAdvanced, AutoSyncOrphanCleanup.
2026-05-11 20:53:26 -07:00
Nick Sandstrom
d824cd1646 Merge remote-tracking branch 'upstream/dev' into test/component-cleanup 2026-05-11 20:53:26 -07:00
Nick Sandstrom
062359a34d Incorporating new changes 2026-05-11 20:53:26 -07:00
Nick Sandstrom
e39cf39401 Reverted LiveGroupFilter/using new version 2026-05-11 20:53:26 -07:00
SergeantPanda
ba76a4d5f2 feat: Add HDHR output profile support and reorganize settings
Some checks failed
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
- Implemented HDHR output profile URL support for specific transcode profiles.
- Introduced a default output profile setting in Stream Settings.
- Updated API views to handle channel profiles and output profiles.
- Migrated preferred region and auto-import settings to system settings.
- Enhanced frontend forms to include output profile selection and descriptions.
2026-05-10 11:14:02 -05:00
SergeantPanda
168aa07cf1 tests: Fix frontend test. 2026-05-08 18:02:56 -05:00
SergeantPanda
dc649ffd88 Enhancement: Initial fmp4 support and major ts_proxy refactor 2026-05-08 17:46:47 -05:00
SergeantPanda
447c0ea25c style: Update Group component alignment and spacing in DVRPage
Some checks failed
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-05-05 11:08:38 -05:00
SergeantPanda
13afd0ed6d Bug fix: RecurringRuleModal was still referencing the old channel store instead of the new channel summary. 2026-05-05 10:59:33 -05:00
SergeantPanda
fe9f83a6af tests: Add API tests for series rule CRUD operations and enhance delete functionality for title-only rules 2026-05-05 09:58:02 -05:00
SergeantPanda
e6c580c9bd feat: Implement delete series rule functionality with title parameter and update related components 2026-05-05 08:40:05 -05:00
SergeantPanda
0822c9aad2 feat: Make EPG channel optional in series rules and enhance search criteria 2026-05-04 21:34:56 -05:00
SergeantPanda
5940efbddf feat: Enhance series rule evaluation and management
- Added support for customizable title and description matching modes in series rules.
- Implemented a preview feature for series rules to show matching upcoming programs.
- Created a new SeriesRuleEditorModal for editing series rules with improved UI.
- Refactored query parsing logic into reusable functions for better maintainability.
- Updated API to handle new parameters for series rule creation and evaluation.
- Enhanced the ProgramRecordingModal and SeriesRecordingModal to integrate the new rule editor.
- Added pagination for program search results in the API.
2026-05-04 20:45:40 -05:00
SergeantPanda
90fadc9bf4 Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into pr/CodeBormen/1215 2026-05-04 18:27:20 -05:00
None
983a6675c5 ui: scope regex preview to the M3U account
- Scope regex previews to the M3U account being edited

- Empty-state message extended from "No streams in this group yet." to "No streams in this group yet. Run an M3U refresh first to populate streams."
2026-05-03 16:53:57 -05:00
SergeantPanda
883390308b
Merge pull request #1214 from sv-dispatcharr/feat/restrict-xc-user-access
restrict XC access per user by IP & CIDR allowlist
2026-05-03 15:41:37 -05:00
None
ed91121f2e ui: add Done/Cancel footer to per-group Configure modal
Adds explicit footer actions "Done" and "Cancel." Done keeps in-memory edits (parent's Save and Refresh persists them); Cancel restores the snapshot taken when the modal opened. Esc and click-outside route to Cancel.
2026-05-03 14:09:01 -05:00
None
b21d8c45ba rename "Hide from Clients" to "Hidden" on channel forms 2026-05-02 17:29:59 -05:00
None
df7e6422df perf: eliminate three remaining N+1 queries in list endpoints
Layered on top of the prior perf commits, removes additional per-row queries

Channel list (apps/channels): add auto_created_by to select_related so ChannelSerializer.get_auto_created_by_name does not fire one SELECT per row. Replace instance.streams.all().order_by(channelstream__order) in to_representation with a read off the prefetched channelstream_set.

M3U account list (apps/m3u): prefetch_related "filters" on the viewset queryset and sort filters in Python over the prefetch in M3UAccountSerializer.get_filters.

Frontend (EditableCell.jsx): align the saveValue useCallback dependency from [row.original.id] to [row.original] in the Number, Group, EPG, and Logo cells, matching the pattern applied to the Text cell.
2026-05-02 16:48:37 -05:00
Nick Sandstrom
9630a74f58 Fix for confirmation display text 2026-05-02 12:11:54 -07:00
Nick Sandstrom
1ea70ab029 Fix for FileInput width with long filenames 2026-05-02 12:11:54 -07:00
Nick Sandstrom
b8f0327002 Fixed util params for API requests 2026-05-02 12:11:54 -07:00
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
Nick Sandstrom
62313c33a6 Updated for M3UProfile changes 2026-05-02 02:53:15 -07:00
Nick Sandstrom
7eeecd8701 Formatting changes 2026-05-02 02:14:12 -07:00
Nick Sandstrom
24a25821fc Refactored components 2026-05-02 02:14:12 -07:00
Nick Sandstrom
4310e164bf Updated ChannelGroup tests for util 2026-05-02 02:14:12 -07:00
Nick Sandstrom
e8f13b78c3 Added component tests 2026-05-02 02:14:12 -07:00
Nick Sandstrom
0ec60b04d2 Added util tests 2026-05-02 02:14:12 -07:00
Nick Sandstrom
113f4c0bde Extracted utils 2026-05-02 02:14:12 -07: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
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
Seth Van Niekerk
a01814069a
code review & pivot 2026-05-01 09:10:37 -04:00