Technology and project layout
SigXor's .NET 10 + WPF architecture, core dependencies, project folders, build, test and release workflow.
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.sha256sidecar. - 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