RealLexi Connect cross-platform companion (unsigned development preview)

This is source, not a pre-built binary: the native input-injection library
(@nut-tree-fork/nut-js) ships a separate prebuilt binary per operating system
and npm selects the right one automatically when you install here, on the
machine that will actually run it.

Install Node.js 20 or later, then run the launcher for your system. Each one
installs dependencies and then asks whether this machine runs with a browser
or headless:

  Windows        double-click setup.bat  (or right-click setup.ps1 -> Run with PowerShell)
  macOS          double-click Setup.command
  Linux          sh setup.sh

Updating, or setting up again: run the launcher in the new folder. Before it
changes anything it checks whether RealLexi Connect is already set up on this
computer - running or registered, from this folder or an older one - and if so
offers to repair it (keep the enrollment, run everything from the new folder),
start over, or uninstall it.

To remove it by hand: node dist/uninstall.js --purge

There is no .dmg in this archive. A disk image can only be built on macOS, and
this package is built on one host for every platform, so shipping a renamed
archive would just fail to mount. On a Mac you can build a real one with:

  sh launchers/make-dmg.sh

If you would rather not use a launcher, the same steps by hand are:
  1. npm ci        (this archive ships its own package-lock.json, so every
                    machine resolves the identical dependency tree)
  2. Find this account's already-enrolled browser device ID and identity
     fingerprint on the Devices page of the web app.
  3. Run: node dist/install.js --target-device-id <uuid> --target-fingerprint <value>
  4. Restart Chrome/Edge. The companion is launched by the browser itself;
     do not run dist/nativeHost.js directly.

For a machine with no browser and no one at the keyboard:
  1. npm ci        (this archive ships its own package-lock.json, so every
                    machine resolves the identical dependency tree)
  2. node dist/enroll.js      (prints a short code and a link)
  3. Approve it from a browser you are already signed into.
  4. node dist/headlessHost.js

This package is unsigned, has not been independently tested on physical
macOS or Linux hardware, and its consent/status window (built on Electron)
is unverified beyond typechecking and unit tests written from a headless
environment with no display. Treat it as a development preview.
