Skip to content

v0.8.0

Latest

Choose a tag to compare

@github-actions github-actions released this 10 Jun 19:55

✨ 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 the MIN_DETECTION/TRACKING_CONFIDENCE sliders 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 to webUtils.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 build then electron . (npm start does 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/blank dist/.

Note for user on macOS:

  • You need set Gatekeeper to Anywhere in System Settings (using sudo spctl --master-disable)
    image

  • If you got “SysMocap” is damaged and can’t be opened. You should move it to the Trash.
    Please run sudo xattr -r -d com.apple.quarantine /Applications/SysMocap.app in your terminal

Full Changelog: v0.7.3...v0.8.0