Commit graph

2588 commits

Author SHA1 Message Date
None
d7b98fef8d Add default/advanced mode toggle and test coverage for EPG matching
Enhanced EPG matching UX by adding radio button toggle to more clearly define optional advanced options. Also added test coverage for stability.

Frontend Changes:
- Added radio button UI to EPGMatchModal for default/advanced mode selection
- Default mode: Uses built-in normalization
- Advanced mode: Shows TagsInput fields for custom prefixes/suffixes/strings
- Mode persists across sessions and settings are preserved when switching modes

Test Coverage:
- Created EPGMatchModal.test.jsx with test cases covering:
  - Component rendering and mode switching
  - Form submission and settings persistence
  - Error handling and UI text variations

- Added test cases to SettingsUtils.test.js for EPG mode handling:
  - epg_match_mode routing to epg_settings group
  - Settings creation and preservation

Since advanced settings are saved persistently but ignored when default settings are used, this adds an easy way in the future to add additional advanced settings to EPG matching like  region influence, match aggression, and match preview, since users can easily switch between modes.
2026-01-31 23:11:20 -06:00
SergeantPanda
0172a7cc00 Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into pr/CodeBormen/894 2026-01-31 19:47:57 -06:00
SergeantPanda
bbe4679a72 changelog: Update changelog for stream table PR. 2026-01-31 19:46:36 -06:00
SergeantPanda
efe915a9b3
Merge pull request #904 from CodeBormen/Feature/866-Search-Filter-Sort-streams-by-TVG-ID
Feature/866 Add TVG-ID column with filter and sort to Streams table
2026-01-31 19:31:48 -06:00
SergeantPanda
aa1f627402 Enhancement: Refactored copyToClipboard utility function to include notification handling internally, eliminating duplicate notification code across the frontend. The function now accepts optional parameters for customizing success/failure messages while providing consistent behavior across all copy operations.
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-01-31 19:01:34 -06:00
SergeantPanda
e20858b7b5
Merge pull request #924 from Dispatcharr/hash-refactor
Hashing refactor
2026-01-31 18:26:33 -06:00
SergeantPanda
9ffd595c96 Enhancement: Added stream_id (provider stream identifier) and stream_chno (provider channel number) fields to Stream model. For XC accounts, the stream hash now uses the stable stream_id instead of the URL when hashing, ensuring XC streams maintain their identity and channel associations even when account credentials or server URLs change. Supports both XC num and M3U tvg-chno/channel-number attributes. 2026-01-31 17:47:46 -06:00
SergeantPanda
e4b312d136 Enhancement: Requery channels and streams after rehashing completes 2026-01-31 14:44:52 -06:00
SergeantPanda
5ed42432fc Bug Fix: Stream rehash/merge logic now guarantees unique stream_hash and always preserves the stream with the best channel ordering and relationships. This prevents duplicate key errors and ensures the correct stream is retained when merging. (Fixes #892) 2026-01-31 14:15:39 -06:00
SergeantPanda
460a005c82 Adjusted minimum sizes, renamed source_info to stats for consistency.
Moved menu to far right.
2026-01-31 12:40:15 -06:00
None
4a4df14950 Add column visibility toggle and Source Info column to StreamsTable
- Add three-dot menu for toggling column visibility (Name, Group, M3U, TVG-ID, Source Info)
- Add Source Info column showing stream resolution and codec with detailed tooltip
- Column visibility persists to localStorage with proper migration handling for existing users
- Default hidden columns: TVG-ID, Source Info
- Auto-refresh table data when video preview closes to show updated stream stats
- Fix state spreading bug in CustomTable/index.jsx (was spreading options.state instead of state)

I think the people are gonna like this one!
2026-01-30 23:37:47 -06:00
None
f8ec970561 Add TVG-ID column with filter and sort to Streams table
Changes:

- frontend/src/components/tables/StreamsTable.jsx

Added TVG-ID column to streams table
Added search filter input in column header
Added sort button for ascending/descending order
Column follows same pattern as Name, Group, and M3U columns

- apps/channels/api_views.py

Added TVG-ID to filterable fields
Added TVG-ID to sortable fields
Enables backend support for search and sorting

Users can now view, search, and sort streams by their TVG-ID directly in the Streams table. Fulfills #866
2026-01-30 23:37:39 -06:00
SergeantPanda
bdcc865b9d Bug Fix: Fixed NumPy baseline detection in Docker entrypoint. Now properly detects when NumPy crashes on import due to CPU baseline incompatibility and installs legacy NumPy version. Previously, if NumPy failed to import, the script would skip legacy installation assuming it was already compatible.
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
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-01-30 16:35:56 -06:00
SergeantPanda
fca50e1570 changelog: Update changelog for UV PR. 2026-01-30 15:40:33 -06:00
SergeantPanda
45da11eb7b
Merge pull request #885 from tobimichael96/main
Refactor: Migrate to UV
2026-01-30 13:49:28 -06:00
SergeantPanda
256d19a2cc Move legacy numpy install to after init-dev. UV replaces. 2026-01-30 12:45:11 -06:00
SergeantPanda
68879ea933 Merge branch 'dev' of https://github.com/Dispatcharr/Dispatcharr into pr/tobimichael96/885 2026-01-30 12:37:07 -06:00
SergeantPanda
a3ed1d9628 Refactor for uv transition. 2026-01-30 12:12:42 -06:00
None
ac48580e63 Move EPG match settings from Settings page to auto-match modal
Relocate EPG matching configuration (ignore prefixes, suffixes, and custom
strings) from the Settings page to a dedicated modal that opens when triggering auto-match.

Changes:

- frontend/src/components/modals/EPGMatchModal.jsx: Added new modal that combines EPG match settings configuration with the auto-match trigger.

- frontend/src/components/tables/ChannelsTable/ChannelTableHeader.jsx: 	Added EPGMatchModal import and state. Changed menu item to open modal instead of directly calling API. Removed inline matchEpg function (logic moved to modal)

- frontend/src/pages/Settings.jsx: Removed EPG Settings accordion (now accessible via modal)

- frontend/src/components/forms/settings/EPGSettingsForm.jsx: Deleted - functionality replaced by EPGMatchModal

- frontend/src/utils/forms/settings/EPGSettingsFormUtils.js: Deleted - was only used by EPGSettingsForm (now defunct)
2026-01-29 20:35:20 -06:00
None
325f8f4257 Merge remote-tracking branch 'upstream/dev' into Feature/771-Auto-Matching-Improvments 2026-01-29 19:24:44 -06:00
Matt Grutza
52b0c7ca26
Merge branch 'Dispatcharr:main' into Feature/771-Auto-Matching-Improvments 2026-01-29 18:22:09 -06:00
SergeantPanda
71e117a850 Remove uv.lock and add to gitignore. This gets generated automatically during build anyway and would add confusion to users not using our container. 2026-01-29 17:24:41 -06:00
SergeantPanda
29c0a6e524 fix: update dependencies in pyproject.toml for compatibility 2026-01-29 17:02:02 -06:00
SergeantPanda
3a959c2743 Fixed pip download (uv doesn't have an equivalent) 2026-01-29 16:15:04 -06:00
SergeantPanda
573b7d12ab changelog: Update changelog for EPG Channel ID xml escaping.
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-01-29 13:26:16 -06:00
SergeantPanda
efec46ea96
Merge pull request #908 from CodeBormen:Fix/765-&-in-channel-TVG-ID-causes-Jellyfin-to-fail-import
fix/765: Escape XML special characters in EPG channel IDs
2026-01-29 13:17:05 -06:00
SergeantPanda
5f4e645a48 changelog: Update changelog for frontend tests/refactoring PR. 2026-01-29 13:12:08 -06:00
SergeantPanda
09a83ca7bb
Merge pull request #905 from nick4810:tests/frontend-unit-tests
Tests/frontend unit tests
2026-01-29 13:09:24 -06:00
None
37a2a7b52b fix: Escape XML special characters in EPG channel IDs
Fixed XML parsing errors in EPG output when channel IDs contain special
characters.

Changes:

- Added html.escape() to apps/output/views.py where
  channel_id is used in XML attributes

- Added unit tests in apps/output/tests.py to validate XML
  escaping for &, <, >, and " characters
2026-01-28 20:15:03 -06:00
Nick Sandstrom
c8430760c4 Added tests after sync 2026-01-28 13:15:26 -08:00
Nick Sandstrom
04e2886ba5 Updated tests after sync 2026-01-27 16:09:01 -08:00
Nick Sandstrom
216e582a91 Merge remote-tracking branch 'upstream/dev' into test/component-cleanup 2026-01-27 13:43:11 -08:00
Nick Sandstrom
525ae60157 Removed functionality not implemented 2026-01-27 13:41:50 -08:00
Nick Sandstrom
cf1625fab9 Slight refactoring 2026-01-27 13:41:25 -08:00
Nick Sandstrom
bd4c9e1d95 Added unit tests 2026-01-27 13:39:04 -08:00
SergeantPanda
dfc57c23cc Add pytz to requirements. Was included as a dependency of drf-yasg before.
Some checks failed
Base Image Build / 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
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-01-27 14:52:36 -06:00
SergeantPanda
5cb0b7dd3b Add pytz to requirements. Was included as a dependency of drf-yasg before.
Some checks failed
Base Image Build / prepare (push) Has been cancelled
CI Pipeline / prepare (push) Has been cancelled
Build and Push Multi-Arch Docker Image / build-and-push (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
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-01-27 14:52:12 -06:00
SergeantPanda
bd1e0e8f07 Bug fix: Admin URL Conflict with XC Streams: Updated nginx configuration to only redirect exact /admin and /admin/ paths to login in production, preventing interference with stream URLs that use "admin" as a username (e.g., /admin/password/stream_id now properly routes to stream handling instead of being redirected). 2026-01-27 14:36:57 -06:00
SergeantPanda
43f08c418d
Merge pull request #901 from Dispatcharr:drf-spectacular
Migrate API documentation from drf-yasg to drf-spectacular
2026-01-27 14:08:33 -06:00
SergeantPanda
ad51f73411 Replace drf-yasg pip with drf-spectactular 2026-01-27 13:49:06 -06:00
SergeantPanda
5364123745 - Swagger/OpenAPI Migration: Migrated from drf-yasg (OpenAPI 2.0) to drf-spectacular (OpenAPI 3.0) for API documentation. This provides:
- Native Bearer token authentication support in Swagger UI - users can now enter just the JWT token and the "Bearer " prefix is automatically added
  - Modern OpenAPI 3.0 specification compliance
  - Better auto-generation of request/response schemas
  - Improved documentation accuracy with serializer introspection
2026-01-27 13:33:33 -06:00
SergeantPanda
8616933ad7 Replace drf-yasg pip with drf-spectactular 2026-01-27 13:17:59 -06:00
GitHub Actions
ddbda17ae4 Release v0.18.1 2026-01-27 17:06:41 +00:00
SergeantPanda
b55ed77516
Downgrade version from 0.18.1 to 0.18.0 2026-01-27 11:05:52 -06:00
SergeantPanda
967bb4d7be
Merge pull request #899 from Dispatcharr/dev
Update Series Rules API Swagger Documentation to include required ite…
2026-01-27 11:05:25 -06:00
SergeantPanda
e21a0217b8
Merge branch 'main' into dev 2026-01-27 11:05:18 -06:00
GitHub Actions
39ed48e0e5 Release v0.18.1 2026-01-27 16:57:57 +00:00
SergeantPanda
2abe07fe1c Update Series Rules API Swagger Documentation to include required items parameter for TYPE_ARRAY schemas 2026-01-27 10:56:04 -06:00
GitHub Actions
b5fedc1a6c Release v0.18.0 2026-01-27 16:44:10 +00:00
SergeantPanda
ed4fabd773
Downgrade version from 0.18.0 to 0.17.0 2026-01-27 10:41:28 -06:00