Skip to content

peepshow 0.9.3 — native Windows fix

Latest

Choose a tag to compare

@t0mtaylor t0mtaylor released this 06 Oct 01:55
· 1 commit to main since this release

Fixed: peepshow could not start on native Windows

Reported in #3. On Windows without Git Bash, every peepshow command failed before it started:

The system cannot find the path specified.

Two separate causes, each enough on its own.

The launchers were shell scripts. npm and pnpm build the Windows .CMD shim from the launcher's shebang. Every peepshow command began #!/bin/sh, so the shim tried to run /bin/sh — which does not exist on Windows unless you have Git Bash. All 96 commands are now Node launchers, so the shim calls node directly. No POSIX shell, MSYS or Git Bash is needed on Windows any more.

Sinks would have silently done nothing. Every sink decided whether to run by comparing its own module URL against the script path Node was given. That comparison is never equal on Windows (file:///C:/… vs C:\…), and also fails through symlinks on macOS and Linux. A mismatch looked like "I am being imported", so the sink exited successfully without doing any work. All 93 sink entry points now use a path comparison that handles both.

Nothing changed about how you use peepshow — same commands, same flags, same output.

Fixed: three sinks were never installable

peepshow-sink-algolia, peepshow-sink-otter and peepshow-sink-typesense shipped launchers that were never registered, so npm i -g peepshow never put them on your PATH. They install now. That takes peepshow from 93 to 96 commands.

Also

  • Ctrl-C now reaches ffmpeg properly instead of potentially leaving it running.
  • SECURITY.md added: supported versions, how to report a vulnerability privately, and a plain account of what peepshow executes on your machine — ffmpeg resolution and the PEEPSHOW_FFMPEG override, yt-dlp, sinks being arbitrary executables driven by ~/.peepshow/sinks.json, and peepshow serve binding loopback by default.
  • Placeholder credentials in the sink docs are now written "<your-value>", so secret scanners stop flagging the documentation.

Thanks to @eliasruntime for the report — the diagnosis in it was exactly right, including which file to look at.