Skip to content

Releases: nerdrx/nx-sentry

NX Sentry 0.4.1

Choose a tag to compare

@nerdrx nerdrx released this 25 Aug 13:29

The most recent trigger now shows at full size beside the meter, so a glance at
the window answers "what just moved?" without scrolling to the event list and
clicking a thumbnail. It carries the timestamp, the pixel count, the share of
the watched area and a relative age — "12s ago" is what tells you whether the
thing is still going on. Clicking it opens the viewer at that frame.

NX Sentry 0.4.0

Choose a tag to compare

@nerdrx nerdrx released this 22 Aug 14:00

Three additions, all aimed at watching a room through a webcam.

Ignore areas. Draw rectangles over the parts inside your selection that
always move but never matter — a clock, a timestamp burnt into the image, a tree
in the corner. Their pixels stop counting: they are subtracted from the
measurement, not just hidden, so the percentage you read is a share of what is
actually being watched, and the outline of "what moved" never grows around them.
They stay pinned to the frame, so you can move and resize the watched rectangle
around them freely.

Cameras. Watch a webcam, a capture card or a virtual device directly — V4L2
on Linux, through the same capture stack. No portal dialog, which is why the
last camera can be reopened automatically on launch (a screen share cannot be
resumed that way without asking permission at every start). Cameras are matched
by device id, never by position, so unplugging one cannot promote another into
its place.

A picture of what tripped it. Every trigger keeps a snapshot of the watched
area from the frame that fired, with the moving part outlined and ignored parts
marked. Click any event to open the viewer: arrow keys step through, Play runs
them as a slideshow, and each carries its timestamp and pixel count. They live
in memory — the last 24 — and are written to disk only if you turn that on, in
which case they go to ~/.config/nx-sentry/snapshots and nowhere else.

Verify the download against the .sha256 sidecar; the .sig is ed25519 over
that digest with the NX release key NX Hub pins.

NX Sentry 0.3.0

Choose a tag to compare

@nerdrx nerdrx released this 22 Aug 07:58

Two things: the alarm can now choose where it plays, and the selector zooms.

Play the alarm on — a device picker in the Alarm panel. If your desktop
routes what you hear through an effects sink (EasyEffects, Carla, a virtual
mixer) while the system default output is the raw device underneath, every app
that just opens the default plays where you cannot hear it — correctly, and
inaudibly. Pick that sink here and the alarm follows you instead of the default.
Sound check now names the device it played to, so "I hear nothing" becomes "it
played on X, and X is not what I am listening to".

Zoom the selector. A three-pixel target on a 4K screen shown in a 700px
preview cannot be selected at all — one preview pixel covers six screen pixels.
Now:

  • Zoom to 16× with Ctrl+scroll (anchored at the pointer), the +/−/Fit buttons,
    and middle-drag to pan.
  • A magnifier follows the cursor, showing the source frame's real pixels at 10×
    with a crosshair on the exact pixel under it.
  • Arrow keys nudge the rectangle one screen pixel at a time; Shift resizes the
    far edge, Alt jumps ten.
  • The region readout gained its origin in source pixels.

NX Sentry 0.2.2

Choose a tag to compare

@nerdrx nerdrx released this 22 Aug 07:46

Sound check — a new button in the Alarm panel.

An alarm you cannot hear is this app's worst failure and was its most invisible
one: a suspended audio engine, a graph producing no signal, and sound going to a
device you are not listening to all run the code perfectly and look identical to
a working sentry.

Sound check plays one bar, taps the master with an analyser to measure what
actually left the audio graph, and tells you which of those three it is and what
to do next. The audio engine is also warmed on the first click or key press in
the window, so it can never sit suspended until the first alarm needs it, and an
alarm that fires while the engine cannot sound now says so rather than flashing
an amber banner over silence.

NX Sentry 0.2.1

Choose a tag to compare

@nerdrx nerdrx released this 22 Aug 07:31

Two fixes found reviewing the 0.2.0 work.

  • The tray kept claiming motion. An alarm that timed out into its quiet time
    never told the main process, so the tray icon, its tooltip and its enabled
    "Silence alarm" item stayed on "Motion detected" until the next manual arm or
    disarm. Every transition is reported now.
  • The meter froze while you dragged the sensitivity slider. Any settings
    change rebuilt the sample timer, and a drag resets it faster than it can fire —
    so the live reading stopped exactly when you were watching it to pick a
    threshold. Only the sample rate touches the timer now.

The detection panel also shows what a sample actually costs, and turns amber
when one no longer fits inside its own interval — pixel-exact analysis is linear
in the region's area, and an overrunning sample starves the UI instead of
reporting anything.

NX Sentry 0.2.0

Choose a tag to compare

@nerdrx nerdrx released this 22 Aug 07:15

Watching literal pixels.

Sensitivity multiplier — ×1 to ×1000 on a geometric slider, dividing both
detection thresholds. Past roughly ×8 the brightness threshold reaches zero: a
change of one unit counts, and the area threshold falls below a single pixel of
any realistic region.

Pixel-exact mode — the region is analysed at 1:1 instead of a 192px
thumbnail, and compared colour channel by colour channel instead of by
brightness. Both halves matter: a downscale averages one changed pixel into its
neighbours, and greyscale maps different colours onto the same luma, so a pixel
that changes colour without changing brightness is invisible without it. The
detection panel says which case it is in — 1:1, downscaled, or capped for a
region past 4 megapixels — rather than implying an exactness it is not
delivering.

Minimum changed pixels — an absolute floor ANDed with the area threshold, so
a boosted setup does not fire on one stray pixel of video noise. At 1 it is a
no-op and a single changed pixel is a trigger.

The meter and the log now read in pixels as well as percent, because at a high
multiplier the percentage is all zeroes and the only readable number is how many
pixels moved.

Also: NX_SENTRY_CONFIG_DIR now redirects Electron's own userData, so a test
run can no longer take the single-instance lock from an installed copy.

Verify the download against the .sha256 sidecar; the .sig is ed25519 over
that digest with the NX release key NX Hub pins.

NX Sentry 0.1.0

Choose a tag to compare

@nerdrx nerdrx released this 22 Aug 06:15

First release.

Pick a screen or a window, drag a rectangle over the part of it you care about,
and NX Sentry sounds an alarm when the pixels inside that rectangle change.

  • Four synthesised alarms (siren, beep, pulse, chime) with volume control, an
    optional desktop notification and a taskbar flash. Nothing to install, no
    audio files to ship.
  • Guards against false alarms: a grace period after arming, N consecutive
    frames over the threshold before it fires, and a quiet time after each alarm.
  • A live meter of how much of the area is moving against the threshold that
    would trip it, a marker on the preview showing what moved, and a timestamped
    log of every trigger.
  • Closes to the tray and keeps watching; the tray menu arms, disarms and
    silences.
  • Wayland capture goes through xdg-desktop-portal, so the compositor decides
    what may be seen — and when a share is revoked the sentry disarms itself
    instead of pretending to watch a dead stream.

Nothing leaves the machine: frames are compared and thrown away, and the app has
no network code at all.

Linux x86_64 AppImage. On distributions without libfuse2 (CachyOS among
them) run it via NX Hub, or extract it with --appimage-extract.

Verify the download against nx-sentry-0.1.0-linux-x86_64.AppImage.sha256; the
.sig sidecar is ed25519 over that digest with the NX release key NX Hub pins.