[WIP] feat!: Complete architectural rewrite, UI/UX upgrade to wizard-style#7
[WIP] feat!: Complete architectural rewrite, UI/UX upgrade to wizard-style#7
Conversation
POTENTIAL BREAKING CHANGES ## Architecture - Introduce dependency injection via Microsoft.Extensions.DependencyInjection - Add service abstractions layer (Services/Abstractions/) - Implement railway-oriented error handling with Result<T> type - Create Core/ folder with IDialogService, INavigationService, Result ## MVVM Refactoring - Split monolithic MainWindowViewModel into 5-step wizard flow - Add WizardViewModel for navigation orchestration - Create dedicated page ViewModels (Welcome, NetworkSetup, TvInstructions, ServerRunning, Completed) - Enhance ViewModelBase with localization support (L property) ## Localization System - Migrate from JSON to GNU GetText (.po files) - Add Karambolo.PO library for .po file parsing - Implement pluralization with language-specific rules (Russian: 3 forms) - Support format strings with parameters - Auto-discover languages from directory structure ## Network Service - Implement multi-factor scoring algorithm for interface recommendation - Add 90+ patterns for virtual adapter detection (Hyper-V, VMware, Docker, VPN) - Introduce gateway detection as quality signal - Add penalties for CGNAT (100.x) and APIPA (169.254.x) addresses - Create NetworkListItem for UI grouping with separators ## New Services - LogService: Thread-safe in-memory logging with levels - NavigationService: Generic page navigation with configuration - DialogService: Window management and log viewer singleton - GetTextLocalizationService: Full GetText implementation ## UI Improvements - Implement 5-step installation wizard UI - Create page-based views (Pages/ folder) - Add LogViewerWindow dialog for application logs - Add converters: BoolToColor, LogLevelToBrush, StepIndicator ## Infrastructure - Upgrade to .NET 10.0 - Update Avalonia to 11.3.10 - Update CommunityToolkit.Mvvm to 8.4.0 - Add Karambolo.PO 1.12.0
|
@PatrickSt1991 Hi Patrick! |
|
@TemaSM I'd love to but I can't this is a personal repo and not an organizational one. GitHub only allows contributors on personal repos and these permissions are set by GitHub itself, can't edit those I'll create a free GitHub organization and move this repo in to it, there I'm able to give you more access. |
|
If you need any more, let me know |
|
@PatrickSt1991 Thank you! Moved my fork of jellyfin-samsungtv into organization: Jellyfin2Samsung/Jellyfin-Orsay-App - need Maintainer role on it too. Will continue coding in spare time. |
|
@TemaSM done! Thanks for all your input and PRs. In working on the tizen version in my spare time and studying for my motor exam so really appreciate you doing all of this! |


TODO
Automate cross-platform builds via GitHub ActionsHighlights
Complete architectural rewrite of Jellyfin Orsay Installer for better maintainability, extensibility, and user experience.
Key features: 5-step wizard UI, intelligent network selection, SSDP-based TV discovery, and full i18n support with 24 languages.
Jellyfin-Orsay-Installer_n2KP6LH0Dw.mp4
What's New
UI/UX
Smart Network Selection
TV Discovery
Localization
CI/CD
Technical
Dependencies
Supported Languages (24)
Pluralization rules
Framework
Changelog
Added
WizardViewModelfor navigation orchestrationSsdpTvDiscoveryServicefor Samsung TV network discoveryTvScannerWindowdialog with real-time progressLogService(thread-safe),NavigationService,DialogServiceLogViewerWindowdialogResult<T>railway-oriented error handlingBoolToColor,ConfidenceToColor,LogLevelToBrush,StepIndicatorChanged
MainWindowViewModelsimplified to container roleViewModelBaseenhanced withLproperty for localizationNetworkServicerewritten with scoring algorithmKestrelOrsayServerimproved with status trackingOrsayPackagernow returnsResult<PackageResult>Removed
MainWindowViewModellogic → page ViewModelsResources/Languages/*.json) → GetTextLocalizationService→GetTextLocalizationServiceLocalizeConverter→L[key]direct bindingBoolToTextConverter(unused)Fixed