9 Commits
Author SHA1 Message Date
33ed942c16 feat(update): add per-cluster quality safeguards (#855)
* feat(update): add per-input actions and pipeline transparency

Squash feature/cluster-update-quality onto upstream/develop.

Include request-local update policies, persisted input and cluster status, library rescan and target rebuild integration, and the update-card view. Align the M3U request regression with the existing Force capability.

* del(build): temporary dev changes

* fix(update): address playlist review findings

* fix(update): rename Shows to Series

* Playlist update refactor

* Playlist update refactor

---------

Co-authored-by: euzu <euzu@proton.me>
2026-09-14 16:44:23 +02:00
euzuandGitHub f8e8941929 Feature/stalker (#780)
New Features

- Added first-class Stalker/Ministra portal support, including live, VOD, series, playback-link refresh, and bulk EPG ingestion.
- Added Stalker configuration and batch/CSV support in the Web UI.
- Added playlist preview and playback handling for Stalker inputs, with support for partial refreshes.
2026-07-20 14:58:06 +02:00
euzuandGitHub 4e82330c6a Fix/code duplicates and UI improvements (#769)
* feat(ui): toast progress bar, pause-on-hover, and copy-details for errors

Add a countdown progress bar to auto-dismiss toasts, pause both the timer and bar on hover (resuming with remaining time), and a 'copy details' action on error toasts. Respects prefers-reduced-motion.

* feat(ui): confirm destructive download/recording cancel and remove

Route the download/recording cancel and remove actions through the shared ConfirmDialog (which focuses the safe Cancel button by default), matching the existing confirmation flow for user/target/RBAC deletes.

* feat(ui): runtime-discovered languages with manifest and RTL support

Load available UI languages at runtime from assets/i18n/index.json, add a toolbar language picker (shown when >1 language), persist the choice, and set document dir/lang for RTL languages such as Arabic.

* feat(ui): recoverable error boundary with per-view retry fallback

Add an ErrorBoundary component (context handle + use_error_boundary hook) that shows a recoverable fallback with a retry button instead of blanking a section. Wrap each main view and the API-user playlist individually so a failure in one view stays contained and the rest of the UI keeps working.

* fix(api): use async canonicalize in local file stream handler

Replace the blocking std path.canonicalize() in local_stream_response with tokio::fs::canonicalize().await so the async runtime is not blocked while resolving the local media file path.

* Add Escape-to-close keyboard support for popup menus

Popup menus now close on Escape in addition to outside mouse-down, improving keyboard accessibility.

* Use descriptive alt text for logo and channel logo images

Login and sidebar logo images now use the configured app title, and playlist channel logos use the channel title, improving screen-reader accessibility.

* Add explicit type=button to shared button primitives

IconButton and TextButton now render with type=button to prevent accidental form submission when used inside forms.

* Persist sidebar collapsed state and table page size

The sidebar collapsed/expanded state and the stream-history table page size are now saved to localStorage and restored on reload, matching the already-persisted theme preference.

* Debounce filter editor input parsing

The filter editor textarea no longer re-parses, previews, and emits the filter on every keystroke. The textarea stays responsive via an immediate value while parsing and change notifications are debounced (300ms).

* Show localized message in table empty state

Data/paged tables now render the No content label in their empty state instead of an icon with no text. Sticky headers were already present.

* feat(frontend): improve screen-reader support for sidebar and toasts

* fix(frontend): handle missing window gracefully in sidebar

* feat(frontend): cross-dissolve colors on theme switch

* feat(frontend): add card hover lift, button press feedback, animated chevrons

* Removed code duplicates
2026-06-02 11:16:03 +02:00
euzu 46f72001e2 css style fixes 2026-04-01 11:12:33 +02:00
euzuandGitHub 9d35a9cbbe Sorce ordinal by category and channel index (#672)
* Sorce ordinal by category and channel index
* Parsing UserApiRequest from request body or query
* CSS stylings
* media tools refactoring
* xtream info parsing now number/string fields
2026-03-27 15:23:39 +01:00
euzuandGitHub dbb5faa4bf Fixed serde infinity parsed as .inf problem (#618)
* Fixed serde infinity parsed as .inf problem
2026-02-27 12:25:04 +01:00
euzuandGitHub 62f7611125 Feature/log fixes and button styling (#536)
fixed some logs, added input name
epg short response hos now no errors field
added missing fields for reverse_proxy and library config in ui
fixed button styling
2026-01-25 16:32:35 +01:00
euzu c491232a4d adjusted color theme 2025-10-15 13:47:20 +02:00
euzu e7e27adc8a react frontend deleted 2025-08-07 19:46:49 +02:00