Technology and project layout

SigXor's .NET 10 + WPF architecture, core dependencies, project folders, build, test and release workflow.

Updated 1 min read Edit this page on GitHub
All documentation
On this page

SigXor is built on .NET 10 and WPF with MVVM. Preview and editing capabilities are split into dedicated controls per file type, while voice and OCR use local ONNX inference.

Technology stack#

Area Choice
Framework .NET 10 (net10.0-windows)
UI WPF + MVVM (CommunityToolkit.Mvvm)
Text editing AvalonEdit
Hex editor Custom control with virtualized IScrollInfo scrolling
Office parsing DocumentFormat.OpenXml + custom RTF / ODF readers
Office high-fidelity rendering WebView2 + mammoth.js / SheetJS / PPTXjs
Markdown Markdig + custom GitHub-style offline CSS
Web / audio / PDF WebView2 (Chromium)
Voice capture NAudio (WaveInEvent)
Speech recognition SenseVoice + sherpa-onnx (offline)
OCR RapidOcrNet + PaddleOCR PP-OCRv6 / v5
Model extraction SharpCompress (tar.bz2)
Tests xUnit (100+ unit tests)
Distribution Framework-dependent single file + custom updater (latest.json, SHA256, watchdog rollback)

Project layout#

SigXor/
├─ SigXor.sln
├─ SigXor.Core/           # core logic and models
├─ SigXor/                # WPF application
│  ├─ Services/           # hooks, tray, auto-start, migration, updates
│  └─ Toolkit/            # Voice / Capture / Ocr / Input
├─ SigXor.Tests/          # xUnit tests
├─ docs/                  # plans, inventories and install guide
├─ website/               # static website (Node build script + Markdown docs)
├─ packaging/             # icons and installer scripts
└─ scripts/               # release, asset fetch and packaging

Build and run#

Requirements: .NET 10 SDK (10.0.302 or later), Windows 10 / 11 64-bit, and optionally the WebView2 runtime.

# Clone
git clone https://github.com/pengcunfu/SigXor.git
cd SigXor

# Build
dotnet build SigXor.sln -c Release

# Run
dotnet run --project SigXor

# Unit tests
dotnet test SigXor.Tests

Office web rendering assets#

The Office web view needs offline JavaScript libraries. Run this once before the first build:

scripts/fetch-office-libs.ps1

The script downloads pinned versions of mammoth.js, SheetJS and PPTXjs and verifies them with SHA-256. The assets are packaged into webassets/, so no network access is needed at runtime.

Voice and OCR models#

  • Speech: SenseVoice, about 230 MB, running on sherpa-onnx.
  • OCR: PP-OCRv6 (about 30 MB), with a PP-OCRv5 fallback (about 16 MB).
  • Models are not shipped in the release. They download into the user data folder on first use and then run fully offline.
  • Both speech and OCR infer locally and never upload audio, screenshots or recognized text.

Release workflow#

  • The release is a framework-dependent single file packaged as a portable ZIP.
  • The ZIP contains SigXor.exe, webassets/ and bundled model resources; missing voice / OCR models download on demand.
  • The build also produces latest.json (version, download URL, SHA256, release notes) and a .sha256 sidecar.
  • The client updater reads the manifest, downloads the full package, verifies it, replaces the app and uses a watchdog to roll back failed starts.

This website#

The website is built from website/ in the same repository. A Node script reads the Markdown documentation and generates plain static HTML plus sitemap.xml, llms.txt and related artifacts. There is no client-side framework runtime.

Contributing#

  • Source and issue tracker: GitHub
  • License: MIT