Core Libraries and Frameworks Crucial to Wand Enhancer's Functionality

Wand Enhancer relies on a tightly coupled stack of .NET Framework 4.8, Newtonsoft.Json, Vite, Preact, and specialized ASAR manipulation libraries to deliver its hybrid desktop-web architecture.

The k1tbyte/Wand-Enhancer project combines a traditional .NET Framework WPF desktop application with a modern TypeScript-based Electron web panel. Understanding the specific libraries and frameworks crucial to Wand Enhancer's functionality reveals how this architecture bridges legacy desktop technologies with contemporary web development to create a unified game patcher tool.

Desktop Foundation: .NET Framework 4.8 and WPF

The desktop layer of Wand Enhancer is built on .NET Framework 4.8 using Windows Presentation Foundation (WPF) for the user interface. In WandEnhancer/WandEnhancer.csproj, the project references core WPF assemblies including PresentationCore, PresentationFramework, and WindowsBase to handle windowing, data-binding, and resource management.

This foundation provides the main application shell that hosts the embedded web panel and manages system-level operations like trainer launching and file system access.

Data Serialization and Build Pipeline

Newtonsoft.Json serves as the primary JSON serialization engine throughout the application. It handles configuration file parsing for WeModConfig and PatchConfig objects, and facilitates communication between the desktop host and the web panel.

For distribution, the project uses ILRepack to merge the compiled executable with its dependent DLLs into a single-file deployment. This MSBuild target is defined in the project file and runs during the release build process.

ASAR Archive Manipulation

A critical component of Wand Enhancer's architecture is its ability to modify Electron ASAR archives. The internal AsarSharp library—defined in AsarSharp/AsarSharp.csproj—provides pure C# logic for reading, extracting, and repacking these archives.

using AsarSharp;

var extractor = new AsarExtractor(@"C:\Wand\resources\app.asar");
extractor.ExtractAll(@"C:\Temp\WandExtract");

Source: AsarSharp/AsarExtractor.cs

To bypass Electron's security restrictions that would normally prevent modification of bundled resources, the project includes a native DLL compiled from the tools/asar-fuses-bypass C source files. This component disables ASAR integrity fuses during runtime patching operations.

Web Panel Stack: Vite and Preact

The web panel relies on Vite as both the development server and production bundler. Configured in web-panel/vite.config.ts, Vite drives the build process that outputs to the dist directory eventually embedded into the desktop application.

Rather than using React directly, the panel uses Preact, a lightweight React-compatible library that reduces bundle size. The Vite configuration aliases React imports to Preact, allowing the codebase to use standard React patterns while maintaining a minimal runtime footprint.

UI Styling and Internationalization

Tailwind CSS provides the styling system for the web panel, configured in tailwind.config.ts. This utility-first approach ensures a minimal CSS payload while maintaining design consistency across the interface.

For internationalization, Wand Enhancer implements Lingui (@lingui/core and @lingui/react), which manages message extraction, compilation, and runtime translation of UI strings. This pipeline is essential for supporting multiple languages in the game selection interface.

Real-Time Communication Bridge

Communication between the web panel and the desktop application occurs through WebSocket connections provided by the ws library. The Node.js bridge scripts—located in web-panel/bridge/—expose Electron IPC functionality as a WebSocket server running on 127.0.0.1:3223.

import { WebSocket } from 'ws'

const socket = new WebSocket('ws://127.0.0.1:3223')
socket.onopen = () => console.log('Bridge connected')
socket.onmessage = e => console.log('Bridge msg:', e.data)

Source: web-panel/src/shared/websocket.ts

The bridge handles translation between the WPF services and the web panel, managing game-status updates, remote commands, and installed-apps synchronization.

import { launchTrainer } from './services/trainerService'

bridge.on('remote_command', payload => {
  if (payload.command === 'play') {
    launchTrainer(payload.gameId)
  }
})

Source: web-panel/bridge/src/services/trainerService.ts

Development and Testing Tooling

The TypeScript codebase is maintained using Vitest for unit testing, ESLint for static analysis, and Prettier for code formatting. These tools are defined in web-panel/package.json and ensure production build stability. PNPM manages all Node.js dependencies and executes build scripts via commands like pnpm run build and pnpm run build:bridge.

Summary

  • .NET Framework 4.8 with WPF provides the desktop application foundation and window management.
  • Newtonsoft.Json handles all configuration serialization and inter-process communication data formats.
  • AsarSharp and the native asar-fuses-bypass DLL enable modification of Electron ASAR archives.
  • Vite and Preact power the modern web panel with optimized bundling and minimal runtime overhead.
  • Tailwind CSS and Lingui deliver styling and internationalization capabilities.
  • ws (WebSocket library) facilitates real-time communication between the web panel and desktop bridge.

Frequently Asked Questions

What is the purpose of the AsarSharp library in Wand Enhancer?

AsarSharp is an internal C# library that provides pure managed code for reading, extracting, and repacking Electron ASAR archives. It allows the WPF application to modify bundled Electron resources without requiring Node.js to be installed on the target system, as implemented in AsarSharp/AsarExtractor.cs.

How does the web panel communicate with the desktop application?

The web panel uses the ws library to establish WebSocket connections to a local bridge server running on 127.0.0.1:3223. This Node.js bridge, located in web-panel/bridge/, translates WebSocket messages into Electron IPC calls that the WPF host processes, enabling bidirectional communication for game status and trainer launching.

Why does Wand Enhancer use Preact instead of React?

Preact provides a React-compatible API with a significantly smaller bundle size. By configuring Vite to alias React imports to Preact in vite.config.ts, the project maintains compatibility with the React ecosystem while reducing the final payload that must be embedded into the .NET application resources.

What role does the native asar-fuses-bypass DLL play?

The native DLL, compiled from C source files in tools/asar-fuses-bypass, disables Electron's ASAR integrity fuses at runtime. Without this component, Electron's security mechanisms would prevent the patcher from modifying the bundled app.asar archive, which is essential for applying game modifications and updates.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →