✨ New features
- Liquid Glass for the model viewer (macOS 26+). New setting "使用液态玻璃代替毛玻璃 (仅限 macOS 26+)" / "Use Liquid Glass instead of Frosted Glass". When enabled, the model‑viewer window uses a real Liquid Glass background and the page goes fully transparent so the glass shows through; when off, the previous frosted‑glass look is kept.
🐛 Bug fixes
- MediaPipe tuning controls were inert.
SMOOTH_LANDMARKS,REFINE_FACE_LANDMARKS, and theMIN_DETECTION/TRACKING_CONFIDENCEsliders had no binding — the engine read the settings but you couldn't change them. They're now adjustable (and persist; applied on the next mocap start). - Model edits didn't persist (#75 / #65). Editing a model's bone binding / info in the model viewer reverted when you reopened it — the main window kept a stale snapshot. Edits now refresh the library immediately and on reopen.
- "Disable auto‑update" was one‑way — once checked it could never be unchecked. Fixed.
- Starting with no video file in file mode hung the loading spinner forever; now it shows a clear prompt.
- Toggling "use discrete process" without restarting could crash Start (null
BrowserView); now guarded with a safe fallback. - VRM hand rig could crash a frame when a hand was detected without a body pose; now guarded.
- Start/Stop could desync if you switched UI language mid‑session (it matched the button's localized text); now driven by state.
- Forwarding web server leaked a worker thread on every start/stop; the thread is now terminated.
- Drag‑and‑drop import of models/images was broken by newer Electron removing
File.path; switched towebUtils.getPathForFile. - The mirror toggles actually work now. "当输入源为摄像头/视频文件时,进行水平镜像翻转" / "Horizontal mirror flip when Camera / Video File as input" were previously inert. They now flip both the input preview and the output avatar, per source, in lockstep.
- i18n parity — localized remaining hard‑coded Chinese strings (camera‑permission alert, port‑edit prompt, "default avatar" tooltip, "Show FPS", "no video selected").
⚡ Performance & code quality
- Cached bone lookup in the FBX/glTF rig — it was doing a linear scan of the whole skeleton for every bone, every frame at 60 fps; now a one‑time name→bone map.
- Unified render + detection core. The desktop app previously carried the rig/detection logic in three near‑identical copies; it's now a single shared core, and the discrete‑process capture path uses the same pipeline as the integrated one. Less code, no drift.
🧱 Under the hood (architecture)
- Build system → Vite (multi‑page). Dev/run is now
npm run buildthenelectron .(npm startdoes both). - UI → Vue 3. Migrated from Vue 2.7 to Vue 3 (Single‑File Components + a small reactive store);
- Electron 31.1.0 → 42.4.0 (Node 24 / Chromium 148).
- Packaging rebuilt on @electron/packager 20's Node API (
buildpackage.js), and it builds the renderer first so packaged apps never ship a stale/blankdist/.
Note for user on macOS:
-
You need set Gatekeeper to Anywhere in System Settings (using
sudo spctl --master-disable)

-
If you got
“SysMocap” is damaged and can’t be opened. You should move it to the Trash.
Please runsudo xattr -r -d com.apple.quarantine /Applications/SysMocap.appin your terminal
Full Changelog: v0.7.3...v0.8.0