Skip to content

Hand Mirror 1.1.12

Choose a tag to compare

@github-actions github-actions released this 17 Jun 00:59
· 2 commits to main since this release
Release-candidate hardening from final bug sweep

Auto-update robustness (could otherwise leave the app dead/broken):
- App: when relaunched with --updated after a silent update, wait (up to
  10s, or take an abandoned mutex) for the previous instance to release the
  single-instance mutex instead of exiting immediately.
- Installer: silent relaunch passes --updated; PrepareToInstall now settles
  ~1.5s after taskkill so the exe handle is released before files are copied
  (a still-locked exe was silently aborting the update).
- TrayApp: guard the async update handlers (check/install) so an exception
  can't crash the tray; re-enable the menu item via finally.

Concurrency / lifecycle:
- WebcamCapture.Dispose now tears down the reader off the UI thread (no
  bounded .Wait), so close/refresh/camera-switch never freeze the UI; the
  reader is stopped before disposal. OS releases the camera on process exit.
- Reset the frame gate on DispatcherOperation.Aborted so a dispatcher
  shutdown mid-frame can't wedge the preview.
- TrayApp: use DispatcherTimer instead of WinForms Timer (correct WPF
  primitive; removes message-pump ambiguity).

UI:
- Wheel-scaling clamps by screen height too, so a portrait source can't grow
  the window taller than the display.

CI:
- Bump actions to Node 24-native majors (checkout@v6, setup-dotnet@v5,
  upload-artifact@v7, action-gh-release@v3); drop the FORCE_NODE24 env.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>