Skip to content

Claude/port mmlaunch avalonia hxl9 j#79

Merged
jmquigs merged 6 commits into
masterfrom
claude/port-mmlaunch-avalonia-Hxl9J
May 15, 2026
Merged

Claude/port mmlaunch avalonia hxl9 j#79
jmquigs merged 6 commits into
masterfrom
claude/port-mmlaunch-avalonia-Hxl9J

Conversation

@jmquigs
Copy link
Copy Markdown
Owner

@jmquigs jmquigs commented May 14, 2026

No description provided.

claude and others added 6 commits May 14, 2026 02:38
The old MMLaunch was locked to .NET Framework 4.6.2 and FsXaml/WPF, which
required Visual Studio on Windows to build. Replace it with an SDK-style F#
Avalonia project on net8.0 so both Windows and Linux contributors can build
with just `dotnet build`. The launcher still only runs on Windows (Linux users
run it under Proton).

- Convert all .xaml + .xaml.fs files to Avalonia .axaml + .axaml.fs.
- Drop FsXaml type providers, FSharp.ViewModule, MonoGame, SharpDX,
  WpfInteropSample, and the linked MMView preview host. Replace the MVVM bits
  with a hand-rolled INotifyPropertyChanged / RelayCommand pair.
- Inline a slim Domain layer (CoreTypes, RegConfig, State, SnapshotProfile)
  so MMLaunch builds standalone on net8.0 without pulling in the
  net462-only MMManaged / MMManaged.Engine assemblies (which depend on
  MonoGame and SharpDX type aliases at the module level).
- Replace the old D3D11 PreviewHost with a small Avalonia MeshPreviewControl
  that parses .mmobj/.obj files inline and draws an orbiting wireframe via
  Skia. Mouse drag rotates, mouse wheel zooms.
- Replace Win32 file/folder pickers with Avalonia StorageProvider.
- Update build.fsx to invoke `dotnet build` for MMLaunch via a new
  BuildMMLaunch target, and remove WpfInteropSample from MMDotNet.sln.
- Also enable console output in debug builds
- Fix delete profile button never being enabled (prop changed event needed to be manually raised from UpdateProfileButtons
- Remove d3d9 from old profile
- Log root on startup but don't keeping logging each time
- Note that removing snapshots is permanent since recycle bin not readily accessible in dotnet SDK
- When starting, try to copy from hook_core.dll if it is found in the working tree.  verify bitness on target and hook core.
- Avoids dotnet install dialog when running under proton
- claude made a copy of a bunch of stuff to avoid pulling in some dependencies that are problematic on dotnet 8+ (Monogame/SharpDx, with possible .net framework versions conflicts)
- instead of that I pushed out the config types it needs to a new module that doesn't depend on the iffy stuff.  The new modules are ConfigTypes and SnapProfileLoad.  Then I used its Domain in the MMLaunch project file trick to "static link" those into MMLaunch
- Required a bunch of reshuffling of names/prefixes/modules but mostly mechanical
- Since claude included its own software-rendered wireframe mesh preview (albeit a slow one for big meshes), it doesn't need monogame or the old WPF/D3D integration I did - good thing because I don't think that builds on dotnet 8+
- I did update MMView so that it still builds and works from VS Studio, although I think nothing really uses it now.
- The new MMLaunch only builds with dotnet, not visual studio - though I suppose its possible to make a VS project for it, I didn't bother as I'm trying to move away from that build.
@jmquigs jmquigs merged commit f413357 into master May 15, 2026
1 check passed
@jmquigs jmquigs deleted the claude/port-mmlaunch-avalonia-Hxl9J branch May 15, 2026 01:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants