Linux#29
Closed
FitzDegenhub wants to merge 6 commits into
Closed
Conversation
Analyzes the full codebase for platform dependencies and outlines a phased migration strategy using Avalonia UI to replace WPF, with Linux-specific game detection for Steam Proton/Lutris/Heroic. https://claude.ai/code/session_01Nct9AosRzHzJ4DSFBPYKtK
…detection Phase 0 - Core Library (UltimateCameraMod.Core): - Extract all platform-independent code into net6.0 class library - Models: AdvancedRow, CameraParamDocs, CameraRules, PresetCodec - Services: CameraMod, HudMod, JsonModExporter, GameInstallBaselineTracker - Paz: ArchiveWriter, AssetCodec, CompressionUtils, NameHasher, PamtReader, PazEntry, StreamTransform (ChaCha20 + LZ4, pure managed C#) - New IGameDetector interface for platform abstraction - WindowsGameDetector (Registry-based, preserves original logic) Phase 1 - Linux Game Detection: - LinuxGameDetector searches Steam native, Steam Flatpak, Heroic Games Launcher, Bottles, and common Linux paths - Parses libraryfolders.vdf, Heroic JSON configs, Bottles prefixes - Brute-force scanning of /mnt, /media, /run/media mount points Phase 2 - Avalonia UI (initial scaffolding): - Project targeting net6.0 with Avalonia 11.2.3 - App.axaml with full dark theme (gold accent #c8a24e) - All button, slider, textbox, combobox, checkbox styles ported - Dialog windows: Export, Import, ImportPreset, AdvancedImport, Input - Program.cs entry point, GlobalUsings, AssemblyInfo Phase 3 - CI Pipeline: - GitHub Actions workflow building Windows (WPF), Windows (Avalonia), and Linux (Avalonia) targets with artifact upload https://claude.ai/code/session_01Nct9AosRzHzJ4DSFBPYKtK
- ExportJsonDialog: multi-format export with save file picker - ImportMetadataDialog: metadata entry form for preset imports - NewPresetDialog: preset name entry dialog - CommunityBrowserDialog: community preset catalog browser - Updated App.axaml.cs with platform-aware game detection https://claude.ai/code/session_01Nct9AosRzHzJ4DSFBPYKtK
- CameraPreview.cs: side-profile camera visualization (Avalonia Canvas port) - FovPreview.cs: top-down FoV cone visualization (Avalonia Canvas port) - TutorialOverlay.cs: first-run tutorial spotlight overlay - CommunityBrowserDialog.axaml.cs: community preset catalog browser code-behind https://claude.ai/code/session_01Nct9AosRzHzJ4DSFBPYKtK
- Convert MainWindow.xaml (983 lines) to Avalonia MainWindow.axaml - WPF namespace → Avalonia namespace - Visibility → IsVisible, StaticResource → DynamicResource - MouseDown → PointerPressed, ToolTip → ToolTip.Tip - Remove WPF-only GroupStyle/DataTrigger/Storyboard templates - Remove DataGrid virtualization panel properties - Remove SelectionUnit, EnableRowVirtualization WPF-only props - Port all 9 MainWindow partial code-behind files (~7,700 lines): - System.Windows → Avalonia namespaces - Dispatcher.BeginInvoke → Dispatcher.UIThread.InvokeAsync - Microsoft.Win32 dialogs → TODO markers for StorageProvider - Visibility enum → IsVisible bool - Remove P/Invoke declarations (user32, kernel32, shell32) - Remove taskbar integration code (Avalonia handles natively) - Replace static GameDetector → GameDetectorFactory.Create() - Add GameDetectorFactory for platform-aware game detection https://claude.ai/code/session_01Nct9AosRzHzJ4DSFBPYKtK
Added comparison table of all evaluated approaches (Wine/Proton, Blazor, Photino, MAUI, Uno, Tauri, GTK#, Eto, ImGui, CLI) and why Avalonia was chosen. Added implementation status note. https://claude.ai/code/session_01Nct9AosRzHzJ4DSFBPYKtK
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Key Findings
Phased Plan
net6.0projectTest plan
LINUX_SUPPORT_PLAN.mdfor completeness and accuracyhttps://claude.ai/code/session_01Nct9AosRzHzJ4DSFBPYKtK