• Suriya released this 2026-09-30 09:23:07 +00:00 | 14 commits to main since this release

    Windows and macOS, and a tray that opens the window

    First release with a macOS package. Same shape as the Windows one — a
    pure-Python wheel and a setup tool that builds a venv on the machine — so it
    costs no frozen engine and no second packaging story.

    macOS, read this first

    • Not notarised. macOS blocks an unsigned download rather than warning
      like SmartScreen. First launch: right-click → Open, then Open again.
      Notarising needs an Apple Developer account.
    • Apple silicon only (arm64).
    • No tray icon. macOS gives Wails its one main run loop and systray wants the
      same one; two attempts both crashed on launch. The window is in the Dock,
      and closing it quits and stops recognition — with no tray there would be
      nothing to get the window back from.

    Fixed

    • The tray's "Open dashboard" did nothing reliable on Windows. Three
      faults: an unlocked Win32 call from the systray goroutine, no un-minimise,
      and no foreground request — a tray click is by definition a moment when the
      app is not in front. Double-clicking the desktop icon while already running
      had the same bug.
    • The engine inherited whatever directory launched the app, which for a
      double-clicked bundle is /. Nothing ever set it.
    • The macOS window could not be maximised — Wails disables the green
      button unless a Mac options block exists, and there was none.
    • build.ps1 would have shipped a stale UI silently. A failed npm ci
      did not stop the script, and a built frontend is committed, so go build
      embedded the old one and produced an installer that worked and was wrong.
    • The setup tool told Mac users to tick "Add python.exe to PATH".

    Since v0.4.8-demo

    • Engine CPU 214% → 16% of a core: a motion gate and one detector thread.
      Detection skipped on 92% of frames with no face lost — the gate only runs
      while no track is open, forces a look every second regardless, and compares
      against the last frame searched.
    • Three states that looked like health from outside: a gallery the running
      encoder cannot read, a camera connected and sending nothing, and an RTSP
      timeout that never existed.
    • Admin console drill-down, sales you can read rather than only sum, a
      dashboard summary, self-service password change, and creating a customer
      before a camera has seen them — with the merge that makes that safe.
    • A wrong URL answered 500, and five endpoints answered 500 to a platform
      admin. Both fixed at the chokepoint.

    Install

    Windows — unzip, run behavision-setup.exe, then Behavision.exe.
    macOS — unzip, right-click Behavision.app → Open, then run
    ./behavision-setup in the same folder to build the engine venv.

    Downloads