Commit graph

  • b584bac062
    Merge 63fed9131a into 3311a38aae RegWin32 2026-01-22 11:56:09 +01:00
  • c2664d1356
    Merge 9446e13ac4 into 3311a38aae patchy8736 2026-01-22 11:53:40 +01:00
  • 15da9b8558
    Merge eb97333d0f into 3311a38aae Matt Grutza 2026-01-21 22:16:03 -06:00
  • eb97333d0f Fix "Invalid page" error when filtering empty channels Matt Grutza 2026-01-21 22:13:39 -06:00
  • f9781394e2
    Merge 8c2ffbe76a into 3311a38aae Matt Grutza 2026-01-21 23:59:28 +00:00
  • 8c2ffbe76a CELERY_NICE_LEVEL warning Matt Grutza 2026-01-21 17:59:23 -06:00
  • 7a46577d2e Remove health check conditions Matt Grutza 2026-01-21 17:46:07 -06:00
  • 236b2307e1 Add health check and fix dangerous checks Matt Grutza 2026-01-21 17:40:36 -06:00
  • 3311a38aae Bug fix: Fixed long IP addresses overlapping adjacent columns in stream connection card by adding truncation with tooltips displaying the full address. (Fixes #712) dev SergeantPanda 2026-01-21 16:55:25 -06:00
  • e79622f513 adjust arrow to be next to title always. SergeantPanda 2026-01-21 16:44:31 -06:00
  • 58d14664e3 Enhancement: Adjust layout and spacing in StreamConnectionCard for improved UI consistency and readability SergeantPanda 2026-01-21 16:35:00 -06:00
  • 3706e63bed feat: Add DISPATCHARR_ENV=modular support for multi-container deployments Matt Grutza 2026-01-21 11:14:28 -06:00
  • 480f88d872
    Merge b9e4a1d8d4 into 8521df94ad s0len 2026-01-21 08:18:03 +01:00
  • b9e4a1d8d4 Feature: Support for external PostgreSQL and Redis services Mattias Svensson 2026-01-21 08:17:11 +01:00
  • e3ec71afe5
    Merge cbb8a52163 into 8521df94ad s0len 2026-01-21 08:05:19 +01:00
  • cbb8a52163 Fix: nginx startup failure due to group name mismatch Mattias Svensson 2026-01-21 08:04:49 +01:00
  • e43aba67e7 Enhancement: Refactor StreamConnectionCard layout for improved UI, separating channel name and current program display. SergeantPanda 2026-01-20 19:35:19 -06:00
  • 2fc2486c34 Enhancement: Added "Hide Stale" filter to quickly hide streams marked as stale. SergeantPanda 2026-01-20 18:51:13 -06:00
  • c9b454431c Enhancement: Streams table UI: Added descriptive tooltips to top-toolbar buttons (Add to Channel, Create Channels, Filters, Create Stream, Delete) and to row action icons (Add to Channel, Create New Channel). Tooltips now use a 500ms open delay for consistent behavior with existing table header tooltips. Streams table button labels: Renamed "Remove" to "Delete" and "Add Stream to Channel" to "Add to Channel" for clarity and consistency with other UI terminology. SergeantPanda 2026-01-20 18:01:17 -06:00
  • 8bc88112aa Enhancement: Improved pill functionality and sizing. SergeantPanda 2026-01-20 17:09:28 -06:00
  • 0984ec9834 Enhancement: Add Progress bar showing elapsed and remaining time for currently playing programs SergeantPanda 2026-01-20 16:31:41 -06:00
  • 6b9e6b2d8a tests: Fix frontent tests for new stats features. SergeantPanda 2026-01-20 15:38:36 -06:00
  • 091c1686e5 Enhancement: Added tooltip on filter pills showing all selected items in a vertical list (up to 10 items, with "+N more" indicator) Also fixed +N not working as intended. SergeantPanda 2026-01-20 15:31:34 -06:00
  • c6f359c159 Enhancement: Refactor StreamsTable component to improve MultiSelect UI with tooltips and pill displays for selected groups and M3Us. SergeantPanda 2026-01-20 14:56:32 -06:00
  • 63fed9131a Add user stream profile settings and configurable service ports Patti 2026-01-20 21:31:10 +01:00
  • 0e1db3e39c Enhancement: - Stats page enhancements: Added "Now Playing" program information for active streams with smart polling that only fetches EPG data when programs are about to change (not on every stats refresh). Features include: - Currently playing program title displayed with live broadcast indicator (green Radio icon) - Expandable program descriptions via chevron button - Efficient POST-based API endpoint (/api/epg/current-programs/) supporting batch channel queries or fetching all channels - Smart scheduling that fetches new program data 5 seconds after current program ends - Only polls when active channel list changes, not on stats refresh - Channel preview button: Added preview functionality to active stream cards on stats page SergeantPanda 2026-01-20 13:37:40 -06:00
  • 3a5a676097 changelog: Update changelog to reference github issue for streamlink. SergeantPanda 2026-01-19 21:28:22 -06:00
  • 3646ec5e46 changelog: Update changelog to reflect streamlink update. SergeantPanda 2026-01-19 21:13:02 -06:00
  • 2c5cc636a7 Security: - Updated react-router from 7.11.0 to 7.12.0 to address two security vulnerabilities: - **High**: Open Redirect XSS vulnerability in Action/Server Action Request Processing ([GHSA-h5cw-625j-3rxh](https://github.com/advisories/GHSA-h5cw-625j-3rxh), [GHSA-2w69-qvjg-hvjx](https://github.com/advisories/GHSA-2w69-qvjg-hvjx)) - **Moderate**: SSR XSS vulnerability in ScrollRestoration component ([GHSA-8v8x-cx79-35w7](https://github.com/advisories/GHSA-8v8x-cx79-35w7)) - Updated react-router-dom from 7.11.0 to 7.12.0 (dependency of react-router) SergeantPanda 2026-01-19 21:03:18 -06:00
  • 7fc2cbc45b tests: Fixed frontend tests failing after datetime utility changes. SergeantPanda 2026-01-19 20:16:06 -06:00
  • cbcf2ac3c2 Bug fix: - Fixed date/time formatting across all tables to respect user's UI preferences (time format and date format) set in Settings page: - Stream connection card "Connected" column - VOD connection card "Connection Start Time" column - M3U table "Updated" column - EPG table "Updated" column - Users table "Last Login" and "Date Joined" columns - All components now use centralized format() helper from dateTimeUtils for consistency - Removed unused imports from table components for cleaner code SergeantPanda 2026-01-19 20:07:31 -06:00
  • f44450471d
    Merge 5a32a5151a into 0b83137ac6 Damien 2026-01-20 02:39:42 +01:00
  • 0b83137ac6 Enhancement: DVR recording remux fallback strategy: Implemented two-stage TS→MP4→MKV fallback when direct TS→MKV conversion fails due to timestamp issues. On remux failure, system now attempts TS→MP4 conversion (MP4 container handles broken timestamps better) followed by MP4→MKV conversion, automatically recovering from provider timestamp corruption. Failed conversions now properly clean up partial files and preserve source TS for manual recovery. SergeantPanda 2026-01-19 18:56:23 -06:00
  • cf323f15a5 changelog: Update changelog for dev build script. SergeantPanda 2026-01-18 17:52:27 -06:00
  • 8012f372cd
    Merge pull request #865 from JeffreyBytes:fix/build-dev-logic SergeantPanda 2026-01-18 17:50:28 -06:00
  • 235467a1ac changelog: Update changelog for logo caching. SergeantPanda 2026-01-18 17:31:20 -06:00
  • 8b15e6e52f
    Merge pull request #871 from Dispatcharr/main SergeantPanda 2026-01-18 17:29:24 -06:00
  • 8521df94ad
    Merge pull request #868 from DawtCom:main main SergeantPanda 2026-01-18 17:26:49 -06:00
  • fec868ac30
    Merge pull request #867 from JeffreyBytes/hotfix/streamtable-filter-bug SergeantPanda 2026-01-18 17:01:29 -06:00
  • 39bf57bf40 Bug Fix: Fixed TypeError on streams table load after container restart: Added robust data validation and type coercion to handle malformed filter options during container startup. The streams table MultiSelect components now safely convert group names to strings and filter out null/undefined values, preventing "right-hand side of 'in' should be an object, got number" errors when the backend hasn't fully initialized. API error handling returns safe defaults. SergeantPanda 2026-01-18 16:24:26 -06:00
  • 620d65d1de Bug Fix: Fixed XtreamCodes API crash when channels have NULL channel_group: The player_api.php endpoint (xc_get_live_streams) now gracefully handles channels without an assigned channel_group by dynamically looking up and assigning them to "Default Group" instead of crashing with AttributeError. Additionally, the Channel serializer now auto-assigns new channels to "Default Group" when channel_group_id is omitted during creation, preventing future NULL channel_group issues. SergeantPanda 2026-01-18 15:52:50 -06:00
  • c970cfcf9a Move caching to client to remove burden on dispatch server DawtCom 2026-01-18 00:49:17 -06:00
  • 4f9088c6fc
    Fix: requery streams using table filters Jeffrey C 2026-01-17 21:15:02 -06:00
  • fe60c4f3bc Enhancement: Update frontend tests workflow to ensure proper triggering on push and pull request events only when frontend code changes. SergeantPanda 2026-01-17 18:30:13 -06:00
  • a772f892bd changelog: Update changelog for recent stream table PR. SergeantPanda 2026-01-17 18:26:33 -06:00
  • a37659eb82
    Merge pull request #846 from JeffreyBytes:feature/667 SergeantPanda 2026-01-17 18:07:50 -06:00
  • 0a340e51e2 Enhancement: Add playlist and channel group fetching logic to StreamsTable for improved data management SergeantPanda 2026-01-17 18:05:57 -06:00
  • f810142493 Enhancement: Optimize channel filtering in StreamViewSet using Count annotation for improved performance on large datasets. SergeantPanda 2026-01-17 17:55:12 -06:00
  • 1afb15fb63 Revert change to header sizing. SergeantPanda 2026-01-17 16:15:11 -06:00
  • d33d047a94 Enhancement: - Mature content filtering support: - Added is_adult boolean field to both Stream and Channel models with database indexing for efficient filtering and sorting - Automatically populated during M3U/XC refresh operations by extracting is_adult value from provider data - Type-safe conversion supporting both integer (0/1) and string ("0"/"1") formats from different providers - UI controls in channel edit form (Switch with tooltip) and bulk edit form (Select dropdown) for easy management - XtreamCodes API support with proper integer formatting (0/1) in live stream responses - Automatic propagation from streams to channels during both single and bulk channel creation operations - Included in serializers for full API support - User-level content filtering: Non-admin users can opt to hide mature content channels across all interfaces (web UI, M3U playlists, EPG data, XtreamCodes API) via "Hide Mature Content" toggle in user settings (stored in custom_properties, admin users always see all content) SergeantPanda 2026-01-17 15:00:28 -06:00
  • 91d73a1fe8
    fix: stabilize build-dev paths and push behavior Jeffrey C 2026-01-17 15:00:09 -06:00
  • c46e258d3d
    Merge branch 'upstream/dev' into feature/667 Jeffrey C 2026-01-17 10:50:30 -06:00
  • 19d25f37c6 Bug Fix: Fixed VOD logo cleanup button count: The "Cleanup Unused" button now displays the total count of all unused logos across all pages instead of only counting unused logos on the current page. SergeantPanda 2026-01-16 14:03:48 -06:00
  • d80da75795 Bug Fix: Changed logo comparisons to use logo_id (raw FK integer) instead of logo (related object) to avoid Django's lazy loading, which triggers a database fetch that fails if the referenced logo no longer exists. SergeantPanda 2026-01-16 13:50:43 -06:00
  • 548098b063 Bug Fix: Fixed VOD refresh failures caused by orphaned logo references: Added validation to detect and clear logo foreign key references when the logo no longer exists in the database, preventing "VODLogo matching query does not exist" errors. Also improved logo assignment logic to properly handle cases where logo URLs exist but logo creation fails, ensuring VOD content updates successfully even when logos are deleted or unavailable. SergeantPanda 2026-01-16 11:11:56 -06:00
  • 9963ae3acf Bug fix: Fixed channel profile filtering to properly restrict content based on assigned channel profiles for all non-admin users (user_level < 10) instead of only streamers (user_level == 0). This corrects the XtreamCodes API endpoints (get_live_categories and get_live_streams) along with M3U and EPG generation, ensuring standard users (level 1) are properly restricted by their assigned channel profiles. Previously, "Standard" users with channel profiles assigned would see all channels instead of only those in their assigned profiles. SergeantPanda 2026-01-16 08:50:39 -06:00
  • f0267508ff Enhancement: Cascading filters for streams table: Improved filter usability with hierarchical M3U and Group dropdowns. M3U acts as the parent filter showing only active/enabled accounts, while Group options dynamically update to display only groups available in the selected M3U(s). Only enabled M3U's are displayed. (Closes #647) SergeantPanda 2026-01-15 16:26:06 -06:00
  • 0f29cc6e66 fix: Update timezone settings structure in UiSettingsFormUtils tests SergeantPanda 2026-01-15 13:52:33 -06:00
  • 82172e9615
    Merge pull request #858 from Dispatcharr/table-refactor SergeantPanda 2026-01-15 13:44:41 -06:00
  • 10169b96c0 feat: Implement table header pin toggle and refactor table preferences management (Closes #663) table-refactor SergeantPanda 2026-01-15 13:40:13 -06:00
  • 3ddc6d196b
    Fix: restore StreamsTable loading feedback Jeffrey C 2026-01-15 10:23:20 -06:00
  • 7cf7aecdf2
    Merge pull request #857 from Dispatcharr/dev SergeantPanda 2026-01-15 09:05:06 -06:00
  • 54644df9a3 Test Fix: Fixed SettingsUtils frontend tests for new grouped settings architecture. Updated test suite to properly verify grouped JSON settings (stream_settings, dvr_settings, etc.) instead of individual CharField settings, including tests for type conversions, array-to-CSV transformations, and special handling of proxy_settings and network_access. Frontend tests GitHub workflow now uses Node.js 24 (matching Dockerfile) and runs on both main and dev branch pushes and pull requests for comprehensive CI coverage. SergeantPanda 2026-01-15 08:55:38 -06:00
  • 38fa0fe99d Bug Fix: Fixed NumPy baseline detection in Docker entrypoint. Now calls numpy.show_config() directly with case-insensitive grep instead of incorrectly wrapping the output. SergeantPanda 2026-01-14 17:10:06 -06:00
  • 29395f0538
    unify StreamsTable refresh with channels requery Jeffrey C 2026-01-14 09:48:40 -06:00
  • 77067d4a1d
    Fix: refresh streams after bulk channel creation Jeffrey C 2026-01-14 04:47:47 -06:00
  • 367ee26f9a
    Fix unassigned filter not updating after adding streams to channels Jeffrey C 2026-01-12 17:00:04 -06:00
  • cbde9297ea
    Fix StreamsTable Group column header overflow and align with ChannelsTable Jeffrey C 2026-01-12 12:03:14 -06:00
  • 6a8a94101a
    Add filter to show unassociated streams in Streams table Jeffrey C 2026-01-12 10:59:52 -06:00
  • a772f5c353 changelog: Update missed close on 0.17.0 changelog. SergeantPanda 2026-01-13 17:03:30 -06:00
  • da186bcb9d Release v0.17.0 v0.17.0 GitHub Actions 2026-01-13 22:48:13 +00:00
  • 75df00e329
    Merge pull request #849 from Dispatcharr/dev SergeantPanda 2026-01-13 16:45:33 -06:00
  • d0ed682b3d Bug Fix: Fixed bulk channel profile membership update endpoint silently ignoring channels without existing membership records. The endpoint now creates missing memberships automatically (matching single-channel endpoint behavior), validates that all channel IDs exist before processing, and provides detailed response feedback including counts of updated vs. created memberships. Added comprehensive Swagger documentation with request/response schemas. SergeantPanda 2026-01-13 15:43:44 -06:00
  • 60955a39c7 changelog: Update changelog for settings refactor. SergeantPanda 2026-01-13 14:35:01 -06:00
  • 6c15ae940d changelog: Update changelog for PR 837 SergeantPanda 2026-01-13 14:30:25 -06:00
  • 516d0e02aa
    Merge pull request #837 from mdellavo/bulk-update-fix SergeantPanda 2026-01-13 14:26:04 -06:00
  • 6607cef5d4 fix bulk update error on unmatched first entry, add tests to cover bulk update api Marc DellaVolpe 2026-01-10 08:55:18 -05:00
  • 2f9b544519
    Merge pull request #848 from Dispatcharr/settings-refactor SergeantPanda 2026-01-13 13:34:50 -06:00
  • 36967c10ce Refactor CoreSettings to use JSONField for value storage and update related logic for proper type handling. Adjusted serializers and forms to accommodate new data structure, ensuring seamless integration across the application. settings-refactor SergeantPanda 2026-01-13 12:18:34 -06:00
  • 4bfdd15b37 Bug Fix: Fixed PostgreSQL backup restore not completely cleaning database before restoration. The restore process now drops and recreates the entire public schema before running pg_restore, ensuring a truly clean restore that removes all tables, functions, and other objects not present in the backup file. This prevents leftover database objects from persisting when restoring backups from older branches or versions. Added --no-owner flag to pg_restore to avoid role permission errors when the backup was created by a different PostgreSQL user. SergeantPanda 2026-01-12 16:38:20 -06:00
  • 2a3d0db670 Enhancement: Loading feedback for all confirmation dialogs: Extended visual loading indicators across all confirmation dialogs throughout the application. Delete, cleanup, and bulk operation dialogs now show an animated dots loader and disabled state during async operations, providing consistent user feedback for backups (restore/delete), channels, EPGs, logos, VOD logos, M3U accounts, streams, users, groups, filters, profiles, batch operations, and network access changes. SergeantPanda 2026-01-12 13:53:44 -06:00
  • 43636a84d0 Enhancement: Added visual loading indicator to the backup restore confirmation dialog. When clicking "Restore", the button now displays an animated dots loader and becomes disabled, providing clear feedback that the restore operation is in progress. SergeantPanda 2026-01-12 13:22:24 -06:00
  • 6d5d16d667 Enhancement: Add check for existing NumPy baseline support before reinstalling legacy NumPy to avoid unnecessary installations. SergeantPanda 2026-01-12 12:29:54 -06:00
  • f821dabe8e Enhancement: Users can now rename existing channel profiles and create duplicates with automatic channel membership cloning. Each profile action (edit, duplicate, delete) in the profile dropdown for quick access. SergeantPanda 2026-01-12 11:29:33 -06:00
  • 9446e13ac4 fix(ts-proxy): eliminate TOCTOU race condition and connection leaks patchy8736 2026-01-10 17:15:36 +01:00
  • 564dceb210 Bug fix: Fixed TV Guide loading overlay not disappearing after navigating from DVR page. The fetchRecordings() function in the channels store was setting isLoading: true on start but never resetting it to false on successful completion, causing the Guide page's loading overlay to remain visible indefinitely when accessed after the DVR page. SergeantPanda 2026-01-11 20:51:26 -06:00
  • 2e9280cf59
    Merge pull request #834 from justinforlenza/stream-profile-argument-parse SergeantPanda 2026-01-11 20:27:15 -06:00
  • 7594ba0a08 changelog: Update changelog for command line parsing PR. SergeantPanda 2026-01-11 20:24:59 -06:00
  • e8d949db86 replaced standard str.split() with shlex.split() Justin 2026-01-09 23:38:32 -05:00
  • a9a433bc5b changelog: Update changelog for test PR submitted. SergeantPanda 2026-01-11 19:24:18 -06:00
  • e72e0215cb
    Merge pull request #841 from nick4810/tests/frontend-unit-tests SergeantPanda 2026-01-11 19:20:37 -06:00
  • b8374fcc68 Refactor/Enhancement: Refactored channel numbering dialogs into a unified CreateChannelModal component that now includes channel profile selection alongside channel number assignment for both single and bulk channel creation. Users can choose to add channels to all profiles, no profiles, or specific profiles with mutual exclusivity between special options ("All Profiles", "None") and specific profile selections. Profile selection defaults to the current table filter for intuitive workflow. SergeantPanda 2026-01-11 19:05:07 -06:00
  • 6b873be3cf Bug Fix: Fixed bulk and manual channel creation not refreshing channel profile memberships in the UI for all connected clients. WebSocket channels_created event now calls fetchChannelProfiles() to ensure profile membership updates are reflected in real-time for all users without requiring a page refresh. SergeantPanda 2026-01-11 17:51:00 -06:00
  • edfa497203 Enhancement: Channel Profile membership control for manual channel creation and bulk operations: Extended the existing channel_profile_ids parameter from POST /api/channels/from-stream/ to also support POST /api/channels/ (manual creation) and bulk creation tasks with the same flexible semantics: - Omitted parameter (default): Channels are added to ALL profiles (preserves backward compatibility) - Empty array []: Channels are added to NO profiles - Sentinel value [0]: Channels are added to ALL profiles (explicit) - Specific IDs [1, 2, ...]: Channels are added only to the specified profiles This allows API consumers to control profile membership across all channel creation methods without requiring all channels to be added to every profile by default. SergeantPanda 2026-01-11 17:31:15 -06:00
  • 0242eb69ee Updated tests for mocked regex Nick Sandstrom 2026-01-10 20:22:36 -08:00
  • 93f74c9d91 Squashed commit of the following: Nick Sandstrom 2026-01-10 19:36:23 -08:00
  • e2e6f61dee Merge remote-tracking branch 'upstream/dev' into tests/frontend-unit-tests Nick Sandstrom 2026-01-10 19:35:40 -08:00
  • 54101ca5af
    Fix FreeBSD package names in freebsd_start.sh Claude 2026-01-10 22:31:58 +00:00
  • c6eb9a477a
    Add build/ to .gitignore Claude 2026-01-10 05:31:08 +00:00
  • 5089b16d36
    Add FreeBSD release workflow and build script Claude 2026-01-10 05:05:17 +00:00