mirror of
https://github.com/euzu/tuliprox.git
synced 2026-10-18 13:52:20 +02:00
* catchup fixes * feat(frontend): bookmarkable views via URL hash deep linking Persist the active view to the URL hash so views are bookmarkable and survive a page refresh. Restore the view from the hash on load, sync the hash on navigation, and handle browser back/forward via a hashchange listener. * feat(dev): add dev container for reproducible development * feat(frontend): interactive multi-series metric sparklines on stats cards * feat(frontend): aggregate status health banner with capacity breakdown * feat(frontend): add guided empty states with hints * chore(devcontainer): add gh CLI, dev tooling, cache volumes, and tasks - Install GitHub CLI, git, build-essential, clang, lld, mold, jq - Add cargo-watch, cargo-llvm-cov, cargo-deny, cargo-machete - Persist cargo registry, target, and gh config via named volumes - Fix volume ownership for the dev user in post-create * chore(vscode): add tasks and launch configs for dev workflow - tasks.json: backend/frontend dev servers, test, lint, fmt, coverage, deps checks, docs - launch.json: CodeLLDB configs for backend and workspace tests * a11y: add accessible labels to inputs and collapsed sidebar buttons - Input: add aria_label prop, falling back to placeholder when no visible label - Sidebar: pass translated hint + aria_label to collapsed-mode icon buttons * feat(frontend): warn on unsaved config changes before page unload * feat(frontend): handle session expiry with client-side logout Schedule a client-side logout when the JWT expires, showing a notification and returning the user to the login screen instead of silently failing with 401s. * chore(vscode): update tasks.json * New Features Session expiration detection with proactive logout warning Real-time health status banner showing connectivity and provider status Live metric sparklines for CPU, memory, and network usage Deep-linkable views via URL hash with back/forward browser support Enhanced empty states with guided messages across app sections Improvements Faster system metrics sampling (2-second intervals) Archive and catchup-aware EPG handling for accurate program guides * New Features Session expiration detection with proactive logout warning Real-time health status banner showing connectivity and provider status Live metric sparklines for CPU, memory, and network usage Deep-linkable views via URL hash with back/forward browser support Enhanced empty states with guided messages across app sections Improvements Faster system metrics sampling (2-second intervals) Archive and catchup-aware EPG handling for accurate program guides
102 lines
4.1 KiB
SCSS
102 lines
4.1 KiB
SCSS
@forward "app_header";
|
|
@forward "app";
|
|
@forward "components/input";
|
|
@forward "components/menu_item";
|
|
@forward "components/icon_button";
|
|
@forward "components/text_button";
|
|
@forward "components/toggle_switch";
|
|
@forward "components/table";
|
|
@forward "components/panel";
|
|
@forward "components/card";
|
|
@forward "components/collapse_panel";
|
|
@forward "components/breadcrumbs";
|
|
@forward "components/login";
|
|
@forward "components/sidebar";
|
|
@forward "components/preferences";
|
|
@forward "components/dashboard/action_card";
|
|
@forward "components/dashboard/status_card";
|
|
@forward "components/dashboard/sparkline";
|
|
@forward "components/dashboard/dashboard_view";
|
|
@forward "components/dashboard/stats_view";
|
|
@forward "components/dashboard/streams_view";
|
|
@forward "components/dashboard/stream_history_view";
|
|
@forward "components/list_view";
|
|
@forward "components/reveal_content";
|
|
@forward "components/hide_content";
|
|
@forward "components/playlist/playlist_settings_view";
|
|
@forward "components/playlist/playlist_explorer_view";
|
|
@forward "components/playlist/playlist_explorer";
|
|
@forward "components/playlist/target/target_common";
|
|
@forward "components/playlist/target/target_watch";
|
|
@forward "components/playlist/target/target_options";
|
|
@forward "components/playlist/target/target_output";
|
|
@forward "components/playlist/target/xtream_output";
|
|
@forward "components/playlist/target/m3u_output";
|
|
@forward "components/playlist/target/strm_output";
|
|
@forward "components/playlist/target/hdhomerun_output";
|
|
@forward "components/playlist/target/target_table";
|
|
@forward "components/playlist/target/target_sort";
|
|
@forward "components/playlist/target/target_rename";
|
|
@forward "components/playlist/input/input_table";
|
|
@forward "components/playlist/input/input_type";
|
|
@forward "components/playlist/input/batch_input_content_view";
|
|
@forward "components/playlist/input/staged_input_view";
|
|
@forward "components/playlist/playlist_mappings";
|
|
@forward "components/playlist/playlist_processing";
|
|
@forward "components/playlist/source_selector";
|
|
@forward "components/playlist/playlist_update_view";
|
|
@forward "components/setup/setup";
|
|
@forward "components/tag_list";
|
|
@forward "components/chip";
|
|
@forward "components/popup_menu";
|
|
@forward "components/dialog";
|
|
@forward "components/custom_dialog";
|
|
@forward "components/filter";
|
|
@forward "components/mapper_script";
|
|
@forward "components/mapper_counter";
|
|
@forward "components/userlist/userlist_view";
|
|
@forward "components/userlist/user_state";
|
|
@forward "components/userlist/proxy_type";
|
|
@forward "components/userlist/max_connections";
|
|
@forward "components/userlist/proxy_user_credentials_form";
|
|
@forward "components/userlist/user_table";
|
|
@forward "components/radio_button_group";
|
|
@forward "components/no_content";
|
|
@forward "components/search";
|
|
@forward "components/loading_indicator";
|
|
@forward "components/theme_picker";
|
|
@forward "components/language_picker";
|
|
@forward "components/error_boundary";
|
|
@forward "components/toastr";
|
|
@forward "components/drop_down_icon_button";
|
|
@forward "components/downloads";
|
|
@forward "components/accordion";
|
|
@forward "components/cvs_table";
|
|
@forward "components/config/config_view";
|
|
@forward "components/config/local_library_config";
|
|
@forward "components/config/log_config";
|
|
@forward "components/config/api_config";
|
|
@forward "components/config/messaging_config";
|
|
@forward "components/config/panel_api_config";
|
|
@forward "components/config/schedules_config";
|
|
@forward "components/tabset";
|
|
@forward "components/select";
|
|
@forward "components/form";
|
|
@forward "components/api_user/api_user_view";
|
|
@forward "components/keyvalue_editor";
|
|
@forward "components/loading_screen";
|
|
@forward "components/websocket_status";
|
|
@forward "components/health_banner";
|
|
@forward "components/playlist/epg_view";
|
|
@forward "components/particle_flow_background";
|
|
@forward "components/source_editor/source_editor";
|
|
@forward "components/source_editor/source_editor_form";
|
|
@forward "components/source_editor/source_editor_block";
|
|
@forward "components/cluster_flags";
|
|
@forward "components/titled_card";
|
|
@forward "components/filter_input";
|
|
@forward "components/filter_editor";
|
|
@forward "components/field_explanation";
|
|
@forward "components/rbac/user_management";
|
|
@forward "components/country";
|